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

Penyiapan

  1. 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
    
  2. Untuk kemudahan penggunaan, atur variabel. Ganti PASSWORD, MYSQLSERVER, dan MYDATABASE 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.

  1. 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
    
  2. Masukkan perintah berikut ini untuk melihat daftar tabel untuk database yang ditentukan:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Untuk mengekspor data dari tabel Hive hivesampletable ke tabel mobiledata 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
    
  4. 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.

  1. Masukkan perintah di bawah ini dalam koneksi SSH terbuka Anda untuk mengimpor data dari tabel mobiledata di SQL, ke direktori wasbs:///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
    
  2. 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
    
  3. 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
    
  4. Gunakan beeline untuk memverifikasi bahwa tabel telah dibuat di Hive.

    1. Sambungkan

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. 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;
      
    3. 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

Langkah berikutnya

Sekarang Anda telah mempelajari cara menggunakan Sqoop. Untuk mempelajari selengkapnya, lihat: