Menggunakan Apache Sqoop untuk mengimpor dan mengekspor data antara Apache Hadoop di HDInsight dan Azure SQL Database
Pelajari cara menggunakan Apache Sqoop untuk mengimpor dan mengekspor antara kluster Apache Hadoop di Azure HDInsight dan Azure SQL Database atau Microsoft SQL Server. Langkah-langkah dalam dokumen ini menggunakan perintah sqoop
langsung dari simpul utama kluster Hadoop. Anda menggunakan SSH untuk menyambungkan ke simpul utama dan menjalankan perintah dalam dokumen ini. Artikel ini adalah kelanjutan dari Menggunakan Apache Sqoop dengan Hadoop di HDInsight.
Prasyarat
Penyelesaian Penyiapan lingkungan pengujian dari Menggunakan Apache Sqoop dengan Hadoop dalam HDInsight.
Klien SSH. Untuk informasi selengkapnya, lihat Menyambungkan ke HDInsight (Apache Hadoop) menggunakan SSH.
Keakraban dengan Sqoop. Untuk informasi selengkapnya, lihat Panduan Pengguna Sqoop.
Penyiapan
Gunakan perintah ssh untuk menyambungkan ke kluster Anda. Edit perintah di bawah ini dengan mengganti CLUSTERNAME dengan nama klaster Anda, lalu masukkan perintah:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Untuk kemudahan penggunaan, atur variabel. Ganti
PASSWORD
,MYSQLSERVER
, danMYDATABASE
dengan nilai yang relevan, lalu masukkan perintah di bawah ini:export PASSWORD='PASSWORD' export SQL_SERVER="MYSQLSERVER" export DATABASE="MYDATABASE" export SERVER_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD" export SERVER_DB_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD;database=$DABATASE"
Ekspor Sqoop
Dari Hive ke SQL.
Untuk memverifikasi bahwa Sqoop dapat melihat database Anda, masukkan perintah di bawah ini di koneksi SSH Anda yang terbuka. Perintah ini mengembalikan daftar database.
sqoop list-databases --connect $SERVER_CONNECT
Masukkan perintah berikut ini untuk melihat daftar tabel untuk database yang ditentukan:
sqoop list-tables --connect $SERVER_DB_CONNECT
Untuk mengekspor data dari tabel Hive
hivesampletable
ke tabelmobiledata
di database Anda, masukkan perintah di bawah ini di koneksi SSH Anda yang terbuka:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
Untuk memverifikasi bahwa data telah diekspor, gunakan kueri berikut dari koneksi SSH Anda untuk melihat data yang diekspor:
sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT COUNT(*) from dbo.mobiledata WITH (NOLOCK)" sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT TOP(10) * from dbo.mobiledata WITH (NOLOCK)"
Impor Sqoop
Dari SQL ke penyimpanan Azure.
Masukkan perintah di bawah ini dalam koneksi SSH terbuka Anda untuk mengimpor data dari tabel
mobiledata
di SQL, ke direktoriwasbs:///tutorials/usesqoop/importeddata
di HDInsight. Bidang dalam data dipisahkan oleh karakter tab, dan garis diakhiri oleh karakter baris baru.sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' -m 1
Atau, Anda juga dapat menentukan tabel Apache Hive:
sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata2' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --create-hive-table \ --hive-table mobiledata_imported2 \ --hive-import -m 1
Setelah impor selesai, masukkan perintah berikut di koneksi SSH Anda yang terbuka untuk mencantumkan data di direktori baru:
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
Gunakan beeline untuk memverifikasi bahwa tabel telah dibuat di Hive.
Sambungkan
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Jalankan setiap kueri di bawah satu per satu dan tinjau output:
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
Keluar dari beeline dengan
!exit
.
Batasan
Ekspor massal - Dengan HDInsight berbasis Linux, konektor Sqoop yang digunakan untuk mengekspor data ke SQL tidak mendukung sisipan massal.
Batching - Dengan HDInsight berbasis Linux, Saat menggunakan tombol
-batch
saat melakukan penyisipan, Sqoop membuat beberapa penyisipan alih-alih menumpuk operasi batching.
Pertimbangan penting
HDInsight dan SQL Server harus berada di Virtual Network Azure yang sama.
Misalnya, lihat Cara menyambungkan HDInsight ke dokumen jaringan lokal Anda.
Untuk informasi selengkapnya tentang menggunakan HDInsight dengan Azure Virtual Network, lihat cara memperluas HDInsight dengan dokumen Azure Virtual Network . Untuk informasi selengkapnya tentang Azure Virtual Network, lihat Gambaran umum Azure Virtual Network.
SQL Server harus dikonfigurasi untuk memperbolehkan autentikasi SQL. Untuk informasi selengkapnya, lihat dokumen Pilih Mode Autentikasi.
Anda mungkin harus mengonfigurasi SQL Server untuk menerima koneksi jarak jauh.
Langkah berikutnya
Sekarang Anda telah mempelajari cara menggunakan Sqoop. Untuk mempelajari selengkapnya, lihat:
- Gunakan Apache Oozie dengan HDInsight: Gunakan tindakan Sqoop dalam alur kerja Oozie.
- Menganalisis data penundaan penerbangan menggunakan HDInsight: Gunakan Interactive Query untuk menganalisis data penundaan penerbangan, lalu gunakan Sqoop untuk mengekspor data ke database di Azure.
- Mengunggah data ke HDInsight: Temukan metode lain untuk mengunggah data ke penyimpanan HDInsight/Azure Blob.