Topik ini menjelaskan cara menggunakan Apache Sqoop pada kluster E-MapReduce (EMR) untuk mengimplementasikan akses baca dan tulis ke data yang disimpan di OSS-HDFS.
Prasyarat
-
Anda telah membuat kluster EMR yang menjalankan EMR V3.42.0 atau versi lebih baru, atau EMR V5.8.0 atau versi lebih baru, serta memilih komponen Sqoop. Untuk informasi selengkapnya, lihat Create a cluster.
-
Anda telah mengaktifkan OSS-HDFS dan memberikan izin akses yang diperlukan. Untuk informasi selengkapnya, lihat Activate OSS-HDFS.
Prosedur
-
Hubungkan ke kluster EMR.
-
Masuk ke Konsol EMR. Di panel navigasi kiri, klik EMR on ECS.
-
Klik kluster EMR yang telah Anda buat.
-
Klik tab Nodes, lalu klik ikon
di sebelah kiri kelompok node. -
Klik ID ECS. Di halaman Instances, klik Connect di samping ID instans.
Untuk masuk ke kluster dari lingkungan Windows atau Linux menggunakan Pasangan kunci SSH atau kata sandi, lihat Log on to a cluster.
-
-
Impor data dari OSS-HDFS ke MySQL.
sudo 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> --as-<format> -m <count>-
Tabel berikut menjelaskan parameter dalam perintah tersebut.
Parameter
Wajib
Deskripsi
dburi
Ya
URI koneksi database. Contoh:
jdbc:mysql://192.168.xxx.xxx:3306/.dbname
Ya
Nama database.
username
Ya
Username untuk login ke database.
password
Ya
Password untuk pengguna database.
tablename
Ya
Nama tabel MySQL.
oss-dir
Ya
Direktori tujuan di OSS-HDFS untuk data yang diimpor. Contoh:
oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/.oss-tmpdir
Tidak
Direktori temporary untuk pekerjaan impor. Parameter ini wajib digunakan untuk mode impor incremental 'append'.
Jika Anda mengatur parameter mode ke append, Apache Sqoop akan mengimpor data ke direktori temporary, lalu mengganti nama dan menyimpan file tersebut ke direktori tujuan. Jika direktori tujuan sudah ada di OSS-HDFS, Apache Sqoop tidak akan mengimpor data ke direktori tersebut atau menimpa data yang sudah ada.
col
Tidak
Kolom pemeriksaan untuk impor incremental.
mode
Tidak
Mode impor incremental. Nilai yang valid:
appenddanlastmodified.-
append: Mengimpor data secara incremental berdasarkan kolom auto-increment. -
lastmodified: Mengimpor data secara incremental berdasarkan kolom timestamp.
value
Tidak
Nilai maksimum dari kolom pemeriksaan pada impor incremental sebelumnya.
format
Tidak
Format file output. Nilai yang valid:
avrodatafile,sequencefile,textfile(default), danparquetfile.count
Tidak
Jumlah tugas MapReduce.
-
-
Contoh
Kode contoh berikut menunjukkan cara mengimpor data dari direktori tertentu di examplebucket ke tabel src_kv di MySQL:
sqoop import --connect jdbc:mysql://master-1-1/sqoop_test --username root --password password1 --table src_kv -m 1 --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv --as-parquetfile
-