Menjalankan pekerjaan Apache Sqoop di HDInsight dengan Curl

Pelajari cara menggunakan Curl untuk menjalankan pekerjaan Apache Sqoop pada kluster Apache Hadoop di HDInsight. Artikel ini menunjukkan cara mengekspor data dari Azure Storage dan mengimpornya ke database SQL Server menggunakan Curl. Artikel ini adalah kelanjutan dari Menggunakan Apache Sqoop dengan Hadoop di HDInsight.

Curl digunakan untuk menunjukkan bagaimana Anda dapat berinteraksi dengan HDInsight menggunakan permintaan HTTP mentah untuk menjalankan, memantau, dan mengambil hasil pekerjaan Sqoop. Ini bekerja menggunakan WebHCat REST API (sebelumnya dikenal sebagai Templeton) yang disediakan oleh kluster HDInsight Anda.

Prasyarat

Mengirim pekerjaan Apache Sqoop menggunakan Curl

Gunakan Curl untuk mengekspor data menggunakan pekerjaan Apache Sqoop dari Azure Storage ke SQL Server.

Catatan

Saat menggunakan Curl atau komunikasi REST lainnya dengan WebHCat, Anda harus mengautentikasi permintaan dengan memberikan nama pengguna dan kata sandi untuk administrator kluster HDInsight. Anda juga harus menggunakan nama kluster sebagai bagian dari Pengidentifikasi Sumber Daya Seragam (URI) yang digunakan untuk mengirim permintaan ke server.

Untuk perintah di bagian ini, ganti USERNAME dengan pengguna untuk mengautentikasi ke kluster, dan ganti PASSWORD dengan kata sandi untuk akun pengguna. Ganti CLUSTERNAME dengan nama kluster Anda.

REST API diamankan melalui autentikasi dasar. Anda harus selalu membuat permintaan dengan menggunakan HTTP Aman (HTTPS) untuk membantu memastikan bahwa informasi masuk Anda dikirim dengan aman ke server.

  1. Untuk kemudahan penggunaan, atur variabel di bawah ini. Contoh ini didasarkan pada lingkungan Windows, lakukan revisi sesuai kebutuhan untuk lingkungan Anda.

    set CLUSTERNAME=
    set USERNAME=admin
    set PASSWORD=
    set SQLDATABASESERVERNAME=
    set SQLDATABASENAME=
    set SQLPASSWORD=
    set SQLUSER=sqluser
    
  2. Dari baris perintah, gunakan perintah berikut untuk memverifikasi bahwa Anda dapat tersambung ke kluster HDInsight Anda:

    curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
    

    Anda akan menerima tanggapan yang serupa dengan berikut ini:

    {"status":"ok","version":"v1"}
    
  3. Gunakan yang berikut ini untuk mengirimkan pekerjaan sqoop:

    curl -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% -d command="export --connect jdbc:sqlserver://%SQLDATABASESERVERNAME%.database.windows.net;user=%SQLUSER%@%SQLDATABASESERVERNAME%;password=%PASSWORD%;database=%SQLDATABASENAME% --table log4jlogs --export-dir /example/data/sample.log --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/data/sqoop/curl" https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/sqoop
    

    Parameter yang digunakan dalam perintah ini adalah sebagai berikut:

    • -d - Karena -G tidak digunakan, permintaan default ke metode POST. -d menentukan nilai data yang dikirim dengan permintaan.

      • user.name - Pengguna yang menjalankan perintah.

      • command - Perintah Sqoop untuk dijalankan.

      • statusdir - Direktori tempat status pekerjaan ini akan ditulis.

      Perintah ini akan mengembalikan ID pekerjaan yang dapat digunakan untuk memeriksa status pekerjaan.

      {"id":"job_1415651640909_0026"}
      
  4. Untuk memeriksa status pekerjaan, gunakan perintah berikut. Ganti JOBID dengan nilai yang dikembalikan di langkah sebelumnya. Misalnya, jika nilai kembaliannya adalah {"id":"job_1415651640909_0026"}, maka JOBID adalah job_1415651640909_0026. Revisi lokasi jq sesuai kebutuhan.

    set JOBID=job_1415651640909_0026
    
    curl -G -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | C:\HDI\jq-win64.exe .status.state
    

    Jika pekerjaan telah selesai, statusnya akan BERHASIL.

    Catatan

    Permintaan Curl ini mengembalikan dokumen JavaScript Object Notation (JSON) dengan informasi tentang pekerjaan; jq digunakan untuk mengambil hanya nilai status.

  5. Setelah status pekerjaan berubah menjadi BERHASIL, Anda dapat mengambil hasil pekerjaan dari penyimpanan Azure Blob. Parameter statusdir yang diteruskan dengan kueri berisi lokasi file output; dalam hal ini, wasb:///example/data/sqoop/curl. Alamat ini menyimpan output pekerjaan di direktori example/data/sqoop/curl pada kontainer penyimpanan default yang digunakan oleh kluster HDInsight Anda.

    Anda dapat menggunakan portal Microsoft Azure untuk mengakses blob stderr dan stdout.

  6. Untuk memverifikasi bahwa data diekspor, gunakan kueri berikut dari klien SQL Anda untuk menampilkan data yang diekspor:

    SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK);
    SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
    

Batasan

  • Ekspor massal - Dengan HDInsight berbasis Linux, konektor Sqoop yang digunakan untuk mengekspor data ke Microsoft SQL Server atau Azure SQL Database saat ini tidak mendukung penyisipan massal.
  • Batching - Dengan HDInsight berbasis Linux, Saat menggunakan tombol -batch saat melakukan sisipan, Sqoop akan melakukan beberapa penyisipan, bukan melakukan batching operasi penyisipan.

Ringkasan

Seperti yang ditunjukkan dalam dokumen ini, Anda dapat menggunakan permintaan HTTP mentah untuk menjalankan, memantau, dan melihat hasil pekerjaan Sqoop pada kluster HDInsight Anda.

Untuk informasi selengkapnya tentang antarmuka REST yang digunakan dalam artikel ini, lihat panduan APACHE Sqoop REST API.

Langkah berikutnya

Menggunakan Apache Sqoop dengan Apache Hadoop di HDInsight

Untuk artikel HDInsight lainnya yang melibatkan curl: