Apache Sqoop adalah alat yang dirancang untuk mentransfer data dalam jumlah besar secara efisien antara Apache Hadoop dan kumpulan data terstruktur, seperti database relasional.
Informasi latar belakang
Apache Sqoop umumnya digunakan untuk mentransfer data dalam skenario berikut:
Impor data dari MySQL ke HDFS
Jalankan perintah berikut pada Node master dari sebuah kluster:
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <hdfs-dir> --split-by <split-column> --check-column <col> --incremental <mode> --last-value <value>Parameter | Deskripsi |
dburi | URL akses database. Contoh: jdbc:mysql://192.168.**.**:3306/. |
dbname | Nama database. |
username | Nama pengguna yang ingin Anda gunakan untuk masuk ke database. |
password | Kata sandi yang ingin Anda gunakan untuk masuk ke database. |
tablename | Nama tabel MySQL. |
hdfs-dir | Direktori Sistem File Terdistribusi Hadoop (HDFS) ke mana Anda ingin mengimpor data. Contoh: /user/hive/result. |
split-column | Opsional. Kolom yang ingin Anda gunakan untuk membagi tugas. Nilai default adalah kolom kunci utama. |
col | Opsional. Kolom yang ingin Anda gunakan untuk menentukan baris yang akan diimpor dalam skenario impor tambahan. |
mode | Opsional. Mode impor tambahan. Nilai valid: append dan lastmodified. |
value | Opsional. Nilai maksimum kolom dalam impor tambahan sebelumnya. |
Untuk informasi lebih lanjut tentang parameter, lihat bagian 7.2. Sintaksis dari Panduan Pengguna Sqoop.
Impor data dari HDFS ke MySQL
Setelah membuat tabel MySQL yang sesuai dengan struktur data HDFS, jalankan perintah berikut pada Node master dari sebuah kluster:
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <hdfs-dir>Parameter | Deskripsi |
dburi | URL akses database. Contoh: jdbc:mysql://192.168.**.**:3306/. |
dbname | Nama database. |
username | Nama pengguna yang ingin Anda gunakan untuk masuk ke database. |
password | Kata sandi yang ingin Anda gunakan untuk masuk ke database. |
tablename | Nama tabel MySQL. |
hdfs-dir | Direktori Sistem File Terdistribusi Hadoop (HDFS) ke mana Anda ingin mengimpor data. Contoh: /user/hive/result. |
Untuk informasi lebih lanjut tentang parameter, lihat bagian 7.2. Sintaksis dari Panduan Pengguna Sqoop.
Impor data dari MySQL ke Hive
Jalankan perintah berikut pada Node master dari sebuah kluster:
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --check-column <col> --incremental <mode> --last-value <value> --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>Parameter | Deskripsi |
dburi | URL akses database. Contoh: jdbc:mysql://192.168.**.**:3306/. |
dbname | Nama database. |
username | Nama pengguna yang ingin Anda gunakan untuk masuk ke database. |
password | Kata sandi yang ingin Anda gunakan untuk masuk ke database. |
tablename | Nama tabel MySQL. |
col | Opsional. Kolom yang ingin Anda gunakan untuk menentukan baris yang akan diimpor dalam skenario impor tambahan. |
mode | Opsional. Mode impor tambahan. Nilai valid: append dan lastmodified. |
value | Opsional. Nilai maksimum kolom dalam impor tambahan sebelumnya. |
hdfs-dir | Direktori Sistem File Terdistribusi Hadoop (HDFS) ke mana Anda ingin mengimpor data. Contoh: /user/hive/result. |
hive-tablename | Nama tabel Hive. |
Untuk informasi lebih lanjut tentang parameter, lihat bagian 7.2. Sintaksis dari Panduan Pengguna Sqoop.
Impor data dari Hive ke MySQL
Anda dapat menggunakan perintah yang sama seperti yang digunakan untuk mengimpor data dari HDFS ke MySQL. Pastikan menentukan direktori HDFS dari tabel Hive tempat Anda mengimpor data ke MySQL. Untuk informasi lebih lanjut, lihat Impor Data dari HDFS ke MySQL.
Impor data dari MySQL ke OSS
Jalankan perintah berikut pada Node master dari sebuah kluster:
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <oss-dir> --temporary-rootdir <oss-tmpdir> --check-column <col> --incremental <mode> --last-value <value>Parameter | Deskripsi |
dburi | URL akses database. Contoh: jdbc:mysql://192.168.**.**:3306/. |
dbname | Nama database. |
username | Nama pengguna yang ingin Anda gunakan untuk masuk ke database. |
password | Kata sandi yang ingin Anda gunakan untuk masuk ke database. |
tablename | Nama tabel MySQL. |
oss-dir | Direktori Object Storage Service (OSS) ke mana Anda ingin mengimpor data. Contoh: oss://<AccessKeyID>:<AccessKey_Secret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result. |
oss-tmpdir | Direktori OSS ke mana Anda ingin menulis data sementara. Jika Anda mengatur parameter mode ke append, Anda harus menentukan parameter ini. Jika Anda mengatur mode ke append, Apache Sqoop mengimpor data ke direktori sementara, lalu mengubah nama file di direktori sementara untuk menyimpan file ke direktori tujuan. Jika direktori tujuan ada di HDFS, Apache Sqoop tidak mengimpor data ke direktori tersebut atau menimpa data di direktori tersebut. |
col | Opsional. Kolom yang ingin Anda gunakan untuk menentukan baris yang akan diimpor dalam skenario impor tambahan. |
mode | Opsional. Mode impor tambahan. Nilai valid: append dan lastmodified. |
value | Opsional. Nilai maksimum kolom dalam impor tambahan sebelumnya. |
Untuk informasi lebih lanjut tentang parameter, lihat bagian 7.2. Sintaksis dari Panduan Pengguna Sqoop.
Impor data dari OSS ke MySQL
Setelah membuat tabel MySQL yang sesuai dengan struktur data OSS, jalankan perintah berikut pada Node master dari sebuah kluster:
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <oss-dir>Parameter | Deskripsi |
dburi | URL akses database. Contoh: jdbc:mysql://192.168.**.**:3306/. |
dbname | Nama database. |
username | Nama pengguna yang ingin Anda gunakan untuk masuk ke database. |
password | Kata sandi yang ingin Anda gunakan untuk masuk ke database. |
tablename | Nama tabel MySQL. |
oss-dir | Direktori Object Storage Service (OSS) ke mana Anda ingin mengimpor data. Contoh: oss://<AccessKeyID>:<AccessKey_Secret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result. |
Untuk informasi lebih lanjut tentang parameter, lihat bagian 7.2. Sintaksis dari Panduan Pengguna Sqoop.
Gunakan pernyataan SQL untuk mengimpor data
Jalankan perintah berikut:
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --query <query-sql> --split-by <sp-column> --hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>Parameter | Deskripsi |
dburi | URL akses database. Contoh: jdbc:mysql://192.168.**.**:3306/. |
dbname | Nama database. |
username | Nama pengguna yang ingin Anda gunakan untuk masuk ke database. |
password | Kata sandi yang ingin Anda gunakan untuk masuk ke database. |
query-sql | Pernyataan SQL yang digunakan untuk memilih data yang ingin Anda impor. Contoh: |
sp-column | Nama kolom yang akan dibagi. Dalam banyak kasus, nilai parameter ini adalah kunci utama tabel MySQL. |
hdfs-dir | Direktori Sistem File Terdistribusi Hadoop (HDFS) ke mana Anda ingin mengimpor data. Contoh: /user/hive/result. |
hive-tablename | Nama tabel Hive. |
Untuk informasi lebih lanjut tentang parameter, lihat bagian 7.2. Sintaksis dari Panduan Pengguna Sqoop.