All Products
Search
Document Center

E-MapReduce:Gunakan perintah MoveTo dari JindoTable

Last Updated:Mar 26, 2026

Perintah MoveTo milik JindoTable melakukan migrasi tabel atau partisi Hive ke jalur tujuan baru dan secara otomatis memperbarui metadata setelahnya, sehingga tabel tetap dapat di-query tanpa intervensi manual. Gunakan kondisi filter untuk melakukan migrasi subset partisi sekaligus, atau gunakan -fullTable untuk memindahkan seluruh tabel dalam satu operasi.

Panduan cepat

Pratinjau partisi yang sesuai dengan filter Anda, lalu jalankan migrasi:

# Langkah 1: Pratinjau partisi yang akan dimigrasi (tidak ada data yang dipindahkan)
jindo table -moveTo \
  -t mydb.events \
  -d oss://my-bucket/archive/events \
  -c "ds < '2023-01-01'" \
  -e

# Langkah 2: Jalankan migrasi
jindo table -moveTo \
  -t mydb.events \
  -d oss://my-bucket/archive/events \
  -c "ds < '2023-01-01'"

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Menginstal Java Development Kit (JDK) 8 di komputer Anda.

  • Memiliki kluster E-MapReduce (EMR) yang menjalankan EMR V3.36.0 atau versi lebih baru, atau EMR V5.2.0 atau versi lebih baru.

Cara kerja

Saat MoveTo dijalankan, proses tersebut:

  1. Menyalin data dasar ke jalur tujuan.

  2. Memperbarui metadata tabel atau partisi agar mengarah ke lokasi baru.

  3. Secara opsional menghapus data sumber setelah migrasi berhasil (memerlukan -r).

MoveTo menggunakan kunci proses (process lock) yang disimpan di Hadoop Distributed File System (HDFS) untuk mencegah eksekusi bersamaan. Hanya satu proses MoveTo yang dapat berjalan dalam satu waktu di kluster EMR. Jika Anda memulai proses kedua saat satu proses sedang berjalan, permintaan tersebut akan ditolak dengan pesan yang mengidentifikasi proses yang sedang berjalan. Tunggu hingga proses tersebut selesai atau hentikan terlebih dahulu sebelum memulai yang baru.

Migrasi tabel atau partisi

Ikuti alur kerja tiga langkah berikut untuk melakukan migrasi data secara aman:

  1. Pratinjau — jalankan dengan -e untuk memverifikasi partisi mana yang akan dipindahkan.

  2. Migrate — menjalankan perintah migrasi aktual.

  3. Pembersihan — tambahkan -r untuk menghapus data sumber hanya setelah Anda memastikan migrasi berhasil.

Peringatan

-r/-removeSource menghapus data sumber secara permanen setelah migrasi. Saat digabungkan dengan -skipTrash, data langsung dihapus tanpa masuk ke tempat sampah HDFS. Selalu jalankan terlebih dahulu dengan -e/-explain untuk memverifikasi partisi mana yang akan dipindahkan sebelum menggunakan flag-flag ini.

Penting

Jangan memulai proses MoveTo pada kluster yang sudah menjalankan proses tersebut. Permintaan baru akan ditolak.

Langkah 1: Masuk ke kluster EMR Anda

Masuk ke kluster EMR Anda melalui mode SSH. Untuk informasi selengkapnya, lihat Masuk ke kluster.

Langkah 2: Pratinjau migrasi (disarankan)

Jalankan perintah dengan -e untuk mencetak daftar partisi yang sesuai tanpa memindahkan data apa pun:

jindo table -moveTo \
  -t <dbName.tableName> \
  -d <destination path> \
  -c "<condition>" \
  -e

Contoh: Pratinjau semua partisi dalam kolom ds yang lebih lama dari 2023-01-01:

jindo table -moveTo \
  -t mydb.events \
  -d oss://my-bucket/archive/events \
  -c "ds < '2023-01-01'" \
  -e

Perintah ini mencetak daftar partisi yang sesuai tanpa memindahkan data apa pun.

Langkah 3: Jalankan migrasi

Untuk melihat semua opsi yang tersedia untuk perintah MoveTo, jalankan:

jindo table -help moveTo

Sintaksis lengkap perintah adalah:

jindo table -moveTo \
  -t <dbName.tableName> \
  -d <destination path> \
  [-c "<condition>" | -fullTable] \
  [-b/-before <before days>] \
  [-p/-parallel <parallelism>] \
  [-s/-storagePolicy <OSS storage policy>] \
  [-o/-overWrite] \
  [-r/-removeSource] \
  [-skipTrash] \
  [-e/-explain] \
  [-l/-logDir <log directory>]
ParameterDeskripsiWajib
-t <dbName.tableName>Tabel yang akan dimigrasi, dalam format database.table. Mendukung tabel partisi maupun tabel non-partisi.Ya
-d <destination path>Jalur tujuan tingkat tabel. Untuk tabel partisi, jalur lengkap partisi dibentuk sebagai <destination path>/p1=v1/p2=v2/.Ya
-c "<condition>" | -fullTableGunakan -fullTable untuk memindahkan seluruh tabel. Gunakan -c "<condition>" untuk memfilter partisi berdasarkan kondisi (mendukung operator standar seperti >). Contoh: -c "ds > 'd'". Anda harus menentukan salah satu opsi ini.Tidak
-b/-before <before days>Migrasi hanya tabel atau partisi yang dibuat paling tidak sejumlah hari yang ditentukan sebelumnya.Tidak
-p/-parallel <parallelism>Jumlah maksimum operasi penyalinan partisi secara konkuren. Nilai default: 1.Tidak
-s/-storagePolicy <OSS storage policy>Kelas penyimpanan target untuk tujuan Object Storage Service (OSS). Nilai yang valid: Standard (default), IA, Archive, ColdArchive. Tidak berlaku untuk tujuan non-OSS.Tidak
-o/-overWriteMengosongkan jalur tujuan sebelum menulis. Untuk tabel partisi, hanya jalur tujuan partisi yang dimigrasi yang dikosongkan.Tidak
-r/-removeSourceMenghapus jalur sumber setelah migrasi dan pembaruan metadata berhasil. Untuk tabel partisi, hanya jalur sumber partisi yang dimigrasi yang dihapus.Tidak
-skipTrashMenghapus data sumber secara langsung, melewati tempat sampah HDFS. Hanya berlaku bila -r/-removeSource ditentukan.Tidak
-e/-explainMencetak daftar partisi yang akan dimigrasi tanpa memindahkan data apa pun. Gunakan ini untuk memvalidasi kondisi filter Anda sebelum menjalankan migrasi sesungguhnya.Tidak
-l/-logDir <log directory>Direktori untuk file log. Nilai default: /tmp/<current user>/.Tidak

Contoh

Migrasi semua partisi dalam mydb.events ke jalur OSS Archive, menggunakan 4 thread paralel, dan hapus data sumber setelah migrasi berhasil:

jindo table -moveTo \
  -t mydb.events \
  -d oss://my-bucket/archive/events \
  -fullTable \
  -s Archive \
  -p 4 \
  -r
Catatan

Sebelum menggunakan kelas penyimpanan ColdArchive, pastikan Penyimpanan Arsip Dingin telah diaktifkan pada bucket OSS tujuan.

Migrasi partisi yang lebih lama dari 2023-06-01 dalam kolom ds, yang dibuat paling tidak 90 hari lalu:

jindo table -moveTo \
  -t mydb.logs \
  -d oss://my-bucket/cold/logs \
  -c "ds < '2023-06-01'" \
  -b 90 \
  -s IA

Konfigurasi direktori kunci kustom

MoveTo menggunakan kunci proses yang disimpan di HDFS untuk mencegah eksekusi bersamaan. Jalur kunci default adalah hdfs:///tmp/jindotable-lock/.

Penting

Jalur kunci harus berupa jalur HDFS. Jika Anda tidak memiliki izin tulis pada jalur default, ikuti langkah-langkah berikut untuk menetapkan jalur kustom.

Peringatan

Sebelum mengubah direktori kunci, pastikan tidak ada proses MoveTo yang sedang berjalan di kluster. Mengubah direktori kunci saat proses aktif dapat menyebabkan proses gagal dan berpotensi mengakibatkan korupsi data.

  1. Buka halaman layanan HDFS di Konsol EMR.

    1. Masuk ke Konsol EMR Alibaba Cloud.

    2. Di bilah navigasi atas, pilih wilayah tempat kluster Anda berada dan pilih kelompok sumber daya.

    3. Klik tab Cluster Management.

    4. Di halaman Manajemen Kluster, temukan kluster Anda dan klik Details di kolom Actions.

    5. Di panel navigasi kiri halaman Ikhtisar Kluster, pilih Cluster Service > HDFS.

  2. Tambahkan item konfigurasi kustom.

    1. Klik tab Configure, lalu klik hdfs-site atau core-site di bagian Konfigurasi Layanan.

    2. Di pojok kanan atas bagian Konfigurasi Layanan, klik Custom Configuration. hdfs-site

    3. Di kotak dialog Add Configuration Item, tambahkan parameter jindotable.moveto.tablelock.base.dir dan atur nilainya ke jalur HDFS yang sudah ada.

  3. Simpan konfigurasi.

    1. Di pojok kanan atas bagian Konfigurasi Layanan, klik Save.

    2. Di kotak dialog Confirm Changes, isi Description lalu klik OK.