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
Penyelesaian Penyiapan lingkungan pengujian dari Menggunakan Apache Sqoop dengan Hadoop dalam HDInsight.
Klien untuk mengkueri Azure SQL Database. Pertimbangkan menggunakan SQL Server Management Studio atau Visual Studio Code.
Curl. Curl adalah alat untuk mentransfer data dari atau ke kluster HDInsight.
jq. Utilitas jq digunakan untuk memproses data JSON yang dikembalikan dari permintaan REST.
Keakraban dengan Sqoop. Untuk informasi selengkapnya, lihat Panduan Pengguna Sqoop.
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.
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
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"}
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"}
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"}
, makaJOBID
adalahjob_1415651640909_0026
. Revisi lokasijq
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.
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 direktoriexample/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.
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: