All Products
Search
Document Center

Object Storage Service:Gunakan Apache Sqoop pada kluster EMR untuk mengimplementasikan akses baca dan tulis ke data yang disimpan di OSS-HDFS

Last Updated:Mar 21, 2026

Gunakan Apache Sqoop pada kluster E-MapReduce (EMR) untuk mengimpor data dari database MySQL ke OSS-HDFS. Sqoop mengakses OSS-HDFS melalui konektor Hadoop-OSS yang telah terintegrasi dalam EMR, sehingga format titik akhir OSS-HDFS berbeda dari OSS standar—gunakan oss://bucket.region.oss-dls.aliyuncs.com/path, bukan oss://bucket/path.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster EMR yang menjalankan EMR V3.42.0 atau versi lebih baru, atau EMR V5.8.0 atau versi lebih baru. Untuk petunjuknya, lihat Create a cluster.

  • OSS-HDFS diaktifkan untuk suatu bucket, dengan izin yang diberikan untuk mengaksesnya. Untuk petunjuknya, lihat Enable OSS-HDFS and grant access permissions.

Hubungkan ke kluster EMR

  1. Masuk ke Konsol EMR. Di panel navigasi sebelah kiri, klik EMR on ECS.

  2. Klik kluster EMR tersebut.

  3. Klik tab Nodes, lalu klik ikon plus (+) di sisi kiri kelompok node.

  4. Klik ID instans ECS. Di halaman Instances, klik Connect di samping ID instans.

Untuk petunjuk masuk menggunakan pasangan kunci SSH atau password SSH dari Windows atau Linux, lihat Log on to a cluster.

Impor data dari MySQL ke OSS-HDFS

Jalankan perintah berikut untuk mengimpor data dari tabel MySQL ke direktori OSS-HDFS:

sudo sqoop import \
  --connect <dburi>/<dbname> \
  --username <username> \
  --password <password> \
  --table <tablename> \
  --target-dir <oss-dir> \
  -m <count>

Parameter

ParameterWajibDeskripsi
dburiYaURI JDBC untuk database. Contoh: jdbc:mysql://192.168.xxx.xxx:3306/
dbnameYaNama database.
usernameYaUsername untuk login ke database.
passwordYaPassword untuk pengguna tersebut.
tablenameYaNama tabel MySQL yang akan diimpor.
oss-dirYaDirektori target OSS-HDFS. Gunakan format titik akhir OSS-HDFS: oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
countTidakJumlah tugas MapReduce.
formatTidakFormat file output. Nilai yang valid: avrodatafile, sequencefile, textfile (default), parquetfile. Tentukan menggunakan --as-<format>, misalnya --as-parquetfile.
Format titik akhir OSS-HDFS (oss://bucket.region.oss-dls.aliyuncs.com/path) berbeda dari OSS standar. Pastikan Anda menggunakan titik akhir khusus OSS-HDFS.

Contoh

Perintah berikut mengimpor tabel src_kv dari database sqoop_test ke OSS-HDFS dalam format Parquet:

sudo 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

Impor data secara inkremental

Untuk impor inkremental, tambahkan --incremental, --check-column, dan --last-value ke perintah Anda. Dua mode didukung: append dan lastmodified.

Mode append

Gunakan mode append ketika tabel Anda hanya menerima baris baru (insert, tanpa update). Sqoop mengimpor baris-baris yang nilai kolom pemeriksanya lebih besar dari --last-value.

Saat menggunakan mode append, parameter --temporary-rootdir wajib digunakan. Sqoop pertama-tama menulis data ke direktori sementara, lalu memindahkan file-file tersebut ke direktori target. Jika direktori target sudah ada, Sqoop tidak akan mengimpor atau menimpa data di dalamnya.

sudo sqoop import \
  --connect <dburi>/<dbname> \
  --username <username> \
  --password <password> \
  --table <tablename> \
  --target-dir <oss-dir> \
  --temporary-rootdir <oss-tmpdir> \
  --incremental append \
  --check-column <col> \
  --last-value <value> \
  -m <count>

Parameter inkremental

ParameterWajibDeskripsi
oss-tmpdirYa (untuk mode inkremental)Direktori sementara OSS-HDFS. Contoh: oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_tmp/
colYaKolom yang digunakan untuk mengidentifikasi baris baru.
valueYaNilai maksimum kolom pemeriksa dari impor sebelumnya. Sqoop hanya mengimpor baris dengan nilai yang lebih tinggi.

Contoh

sudo sqoop import \
  --connect jdbc:mysql://master-1-1/sqoop_test \
  --username root \
  --password password1 \
  --table src_kv \
  --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv \
  --temporary-rootdir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_tmp \
  --incremental append \
  --check-column id \
  --last-value 100 \
  -m 1

Mode lastmodified

Gunakan mode lastmodified ketika tabel Anda menerima insert maupun update. Sqoop mengimpor baris-baris yang kolom pemeriksanya (berupa timestamp) lebih baru dari --last-value. Mode ini memerlukan parameter --merge-key untuk menggabungkan baris yang diperbarui dengan data yang sudah ada.

Saat menggunakan mode lastmodified, parameter --temporary-rootdir wajib digunakan.

sudo sqoop import \
  --connect <dburi>/<dbname> \
  --username <username> \
  --password <password> \
  --table <tablename> \
  --target-dir <oss-dir> \
  --temporary-rootdir <oss-tmpdir> \
  --incremental lastmodified \
  --check-column <col> \
  --merge-key <key-col> \
  --last-value <value> \
  -m <count>

Contoh

sudo sqoop import \
  --connect jdbc:mysql://master-1-1/sqoop_test \
  --username root \
  --password password1 \
  --table src_kv \
  --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv \
  --temporary-rootdir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_tmp \
  --incremental lastmodified \
  --check-column updated_at \
  --merge-key id \
  --last-value "2024-01-01 00:00:00" \
  -m 1