Apache Sqoop mentransfer data dalam jumlah besar antara Apache Hadoop dan dataset terstruktur, seperti database relasional. Gunakan Sqoop untuk memindahkan data antara MySQL, Hadoop Distributed File System (HDFS), Hive, dan Object Storage Service (OSS) pada kluster EMR.
Jalankan semua perintah pada node master kluster Anda.
Skenario yang didukung
Impor data dari MySQL ke HDFS
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 | Wajib | Deskripsi |
|---|---|---|
dburi | Wajib | URL akses database. Contoh: jdbc:mysql://192.168..:3306/ |
dbname | Wajib | Nama database |
username | Wajib | Username untuk login ke database |
password | Wajib | Password untuk login ke database |
tablename | Wajib | Nama tabel MySQL |
hdfs-dir | Wajib | Direktori HDFS tempat menulis data. Contoh: /user/hive/result |
split-column | Opsional | Kolom yang digunakan untuk memisahkan tugas paralel. Nilai default adalah kolom kunci primer |
col | Opsional | Kolom yang digunakan untuk mengidentifikasi baris dalam impor inkremental |
mode | Opsional | Mode impor inkremental. Nilai yang valid: append dan lastmodified |
value | Opsional | Nilai maksimum kolom dari impor inkremental sebelumnya |
Untuk referensi parameter lengkap, lihat Syntax dalam Sqoop User Guide.
Impor data dari HDFS ke MySQL
Sebelum menjalankan perintah ini, buat tabel MySQL yang skemanya sesuai dengan struktur data HDFS.
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> --export-dir <hdfs-dir>| Parameter | Wajib | Deskripsi |
|---|---|---|
dburi | Wajib | URL akses database. Contoh: jdbc:mysql://192.168..:3306/ |
dbname | Wajib | Nama database |
username | Wajib | Username untuk login ke database |
password | Wajib | Password untuk login ke database |
tablename | Wajib | Nama tabel MySQL |
hdfs-dir | Wajib | Direktori sumber HDFS. Contoh: /user/hive/result |
Untuk referensi parameter lengkap, lihat Syntax dalam Sqoop User Guide.
Impor data dari Hive ke MySQL
Tabel Hive disimpan sebagai file di HDFS. Untuk mengekspor tabel Hive ke MySQL, gunakan perintah sqoop export yang sama seperti pada Impor data dari HDFS ke MySQL, dengan menentukan direktori HDFS tabel Hive sebagai --export-dir.
Impor data dari MySQL ke Hive
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 | Wajib | Deskripsi |
|---|---|---|
dburi | Wajib | URL akses database. Contoh: jdbc:mysql://192.168..:3306/ |
dbname | Wajib | Nama database |
username | Wajib | Username untuk login ke database |
password | Wajib | Password untuk login ke database |
tablename | Wajib | Nama tabel MySQL |
hdfs-dir | Wajib | Direktori staging HDFS sementara. Contoh: /user/hive/result |
hive-tablename | Wajib | Nama tabel Hive tujuan |
col | Opsional | Kolom yang digunakan untuk mengidentifikasi baris dalam impor inkremental |
mode | Opsional | Mode impor inkremental. Nilai yang valid: append dan lastmodified |
value | Opsional | Nilai maksimum kolom dari impor inkremental sebelumnya |
Untuk referensi parameter lengkap, lihat Syntax dalam Sqoop User Guide.
Impor data dari MySQL ke OSS
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 | Wajib | Deskripsi |
|---|---|---|
dburi | Wajib | URL akses database. Contoh: jdbc:mysql://192.168..:3306/ |
dbname | Wajib | Nama database |
username | Wajib | Username untuk login ke database |
password | Wajib | Password untuk login ke database |
tablename | Wajib | Nama tabel MySQL |
oss-dir | Wajib | Direktori tujuan OSS. Contoh: oss://<AccessKeyId>:<AccessKeySecret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result |
oss-tmpdir | Wajib jika mode=append | Direktori temporary OSS. Ketika mode bernilai append, Sqoop menulis data ke direktori ini terlebih dahulu, lalu mengganti nama file ke direktori tujuan. Jika direktori tujuan sudah ada di HDFS, Sqoop tidak akan mengimpor atau menimpa data |
col | Opsional | Kolom yang digunakan untuk mengidentifikasi baris dalam impor inkremental |
mode | Opsional | Mode impor inkremental. Nilai yang valid: append dan lastmodified |
value | Opsional | Nilai maksimum kolom dari impor inkremental sebelumnya |
Untuk referensi parameter lengkap, lihat Syntax dalam Sqoop User Guide.
Impor data dari OSS ke MySQL
Sebelum menjalankan perintah ini, buat tabel MySQL yang skemanya sesuai dengan struktur data OSS.
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> --export-dir <oss-dir>| Parameter | Wajib | Deskripsi |
|---|---|---|
dburi | Wajib | URL akses database. Contoh: jdbc:mysql://192.168..:3306/ |
dbname | Wajib | Nama database |
username | Wajib | Username untuk login ke database |
password | Wajib | Password untuk login ke database |
tablename | Wajib | Nama tabel MySQL |
oss-dir | Wajib | Direktori sumber OSS. Contoh: oss://<AccessKeyId>:<AccessKeySecret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result |
Untuk referensi parameter lengkap, lihat Syntax dalam Sqoop User Guide.
Gunakan pernyataan SQL untuk mengimpor data
Gunakan --query untuk memfilter baris dengan pernyataan SQL kustom alih-alih mengimpor seluruh tabel.
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 | Wajib | Deskripsi |
|---|---|---|
dburi | Wajib | URL akses database. Contoh: jdbc:mysql://192.168..:3306/ |
dbname | Wajib | Nama database |
username | Wajib | Username untuk login ke database |
password | Wajib | Password untuk login ke database |
query-sql | Wajib | Pernyataan SQL untuk memilih data yang akan diimpor. Harus menyertakan $CONDITIONS. Contoh: SELECT * FROM profile WHERE id>1 AND \$CONDITIONS |
sp-column | Wajib | Kolom yang digunakan untuk memisahkan tugas paralel. Biasanya kunci primer tabel MySQL |
hdfs-dir | Wajib | Direktori staging HDFS sementara. Contoh: /user/hive/result |
hive-tablename | Wajib | Nama tabel Hive tujuan |
Untuk referensi parameter lengkap, lihat Syntax dalam Sqoop User Guide.