Topik ini menjelaskan cara menggunakan DataX untuk mengekspor data dari Tablestore ke file CSV lokal. Anda dapat mengekspor data dari tabel data dan tabel seri waktu di Tablestore.
Informasi latar belakang
DataX adalah alat sinkronisasi offline antara berbagai sumber data. Alat ini mendukung sinkronisasi yang efisien dan stabil antara berbagai sumber data seperti MySQL, Oracle, HDFS, Hive, dan Tablestore.
Prasyarat
Titik akhir, nama instance Tablestore, serta informasi tabel sumber di Tablestore telah diperoleh.
Pasangan AccessKey telah dibuat untuk akun Alibaba Cloud Anda atau Pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Buat Pasangan AccessKey.
PentingUntuk tujuan keamanan, kami sarankan Anda menggunakan fitur Tablestore sebagai pengguna RAM. Anda dapat membuat pengguna RAM, memberikan izin kepada pengguna untuk mengelola Tablestore dengan melampirkan kebijakan
AliyunOTSFullAccesspada pengguna RAM, dan membuat pasangan AccessKey untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Gunakan Pasangan AccessKey Pengguna RAM untuk Mengakses Tablestore.
Prosedur
Dalam contoh-contoh dalam topik ini, digunakan instance Elastic Compute Service (ECS) yang menjalankan Alibaba Cloud Linux 3.2104 LTS 64-bit atau Ubuntu 22.04 64-bit. Untuk informasi lebih lanjut, lihat Apa Itu ECS?
Langkah 1: Instal dependensi
Instal Python 2 atau Python 3.
Python 3 sudah terinstal sebelumnya pada instance ECS yang menjalankan Alibaba Cloud Linux atau Ubuntu. Untuk instance ECS yang menjalankan sistem operasi lain, Anda perlu menginstal Python secara manual.
Instal JDK 1.8 atau versi lebih baru. Kami sarankan Anda menginstal JDK 1.8.
Bagian ini menjelaskan cara menginstal JDK 1.8 pada instance ECS yang menjalankan Alibaba Cloud Linux atau Ubuntu. Untuk instance ECS yang menjalankan sistem operasi lain, Anda perlu menginstal JDK sendiri.
Alibaba Cloud Linux
yum -y install java-1.8.0-openjdk-devel.x86_64Ubuntu
apt update && apt upgrade apt install openjdk-8-jdk
Langkah 2: Unduh DataX
Unduh paket DataX.
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gzEkstrak paket tersebut.
tar -zxvf datax.tar.gz
Untuk informasi tentang cara mengompilasi DataX sendiri, lihat Panduan Instalasi DataX.
Langkah 3: Buat file konfigurasi
Masuk ke direktori
binDataX.cd datax/binBuat file konfigurasi. Jika Anda menggunakan
vim, sesuaikan perintah sesuai kebutuhan.vi tablestore_to_csv.jsonKode sampel berikut menunjukkan isi file konfigurasi. Modifikasi parameter berdasarkan kebutuhan sinkronisasi dan situasi aktual Anda.
Ekspor data dari tabel data
Untuk informasi skema tabel data sumber bernama
orders, lihat Lampiran 1: Tabel Data.{ "job": { "setting": { "speed": { "channel": 1 }, "errorLimit": { "record": 0, "percentage": 0 } }, "content": [ { "reader": { "name": "otsreader", "parameter": { "endpoint": "https://<YOUR-INSTANCE>.<YOUR-REGION>.ots.aliyuncs.com", "accessId": "<YOUR-ACCESS-KEY-ID>", "accessKey": "<YOUR-ACCESS-KEY-SECRET>", "instanceName": "<YOUR-INSTANCE>", "table": "orders", "range": { "begin": [ { "type": "INF_MIN" } ], "end": [ { "type": "INF_MAX" } ] }, "column": [ { "name": "order_id" }, { "name": "user_id" }, { "name": "sku_id" }, { "name": "price" }, { "name": "num" }, { "name": "total_price" }, { "name": "order_status" }, { "name": "create_time" }, { "name": "modified_time" } ] } }, "writer": { "name": "txtfilewriter", "parameter": { "path": "/tmp/export/", "fileName": "output.csv", "writeMode": "truncate", "fileFormat": "csv" } } } ] } }Ekspor data dari tabel seri waktu
Untuk informasi skema tabel seri waktu sumber bernama
vehicles_timeseriesdata, lihat Lampiran 2: Tabel Seri Waktu.{ "job": { "setting": { "speed": { "channel": 1 } }, "content": [ { "reader": { "name": "otsreader", "parameter": { "endpoint": "https://<YOUR-INSTANCE>.<YOUR-REGION>.ots.aliyuncs.com", "accessId": "<YOUR-ACCESS-KEY-ID>", "accessKey": "<YOUR-ACCESS-KEY-SECRET>", "instanceName": "<YOUR-INSTANCE>", "table": "vehicles_timeseriesdata", "mode": "normal", "newVersion": "true", "isTimeseriesTable": "true", "measurementName": "measurement_1", "timeRange": { "begin": 0, "end": 1750000000000 }, "column": [ { "name": "_m_name" }, { "name": "_data_source" }, { "name": "_tags" }, { "name": "_time" }, { "name": "vin_id", "type": "STRING" }, { "name": "mfrs", "type": "STRING" }, { "name": "model", "type": "STRING" }, { "name": "speed", "type": "DOUBLE" }, { "name": "gps", "type": "STRING" }, { "name": "mileage", "type": "DOUBLE" }, { "name": "emission", "type": "DOUBLE" } ] } }, "writer": { "name": "txtfilewriter", "parameter": { "path": "/tmp/export/", "fileName": "output.csv", "writeMode": "truncate", "fileFormat": "csv" } } } ] } }Tabel berikut menjelaskan parameter-parameter Tablestore Reader yang harus dimodifikasi.
Parameter
Deskripsi
channel
Unit paralel inti dari tugas sinkronisasi data.
Setiap channel sesuai dengan thread independen untuk membaca dan menulis data. Anda dapat mengontrol konkurensi tugas dengan memodifikasi jumlah channel, yang memengaruhi kinerja sistem dan konsumsi sumber daya.
endpoint
Titik akhir dari instance Tablestore.
CatatanJika Anda mengakses Tablestore dari instance ECS, kami sarankan Anda menggunakan titik akhir VPC, yang tidak menghasilkan biaya untuk lalu lintas keluar melalui Internet dan menyediakan kinerja jaringan dan keamanan yang lebih baik.
accessId
ID AccessKey dari akun Alibaba Cloud Anda atau pengguna RAM.
accessKey
Rahasia AccessKey dari akun Alibaba Cloud Anda atau pengguna RAM.
instanceName
Nama instance Tablestore.
tableName
Nama tabel sumber di Tablestore.
column
Array kolom yang akan diekspor.
range
Parameter begin dan end menentukan nilai awal dan akhir untuk setiap kolom kunci utama saat data dibaca dari tabel data Tablestore. Nilai parameter begin dan end adalah array JSON. Rentang data yang dibaca dari Tablestore adalah interval tertutup-kiri, terbuka-kanan.
Kunci utama awal dan akhir harus berupa kunci utama yang valid atau titik virtual yang terdiri dari tipe
INF_MINdanINF_MAX. Jumlah kolom dalam titik virtual harus sama dengan jumlah kolom dalam kunci utama.INF_MINmenunjukkan negatif tak terhingga, yang lebih kecil dari nilai apa pun.INF_MAXmenunjukkan positif tak terhingga, yang lebih besar dari nilai apa pun.CatatanParameter ini digunakan ketika tabel data digunakan sebagai tabel sumber. Parameter ini opsional. Nilai default menunjukkan bahwa pembacaan dimulai dari negatif tak terhingga.
measurementName
Nama metrik dari seri waktu yang ingin Anda baca. Jika parameter ini tidak dikonfigurasi, semua data dalam tabel dibaca.
CatatanParameter ini digunakan ketika tabel seri waktu digunakan sebagai tabel sumber.
timeRange
Parameter begin dan end menentukan cap waktu awal dan akhir untuk membaca data. Nilai parameter begin dan end adalah array JSON. Rentang data yang dibaca dari Tablestore adalah interval tertutup-kiri, terbuka-kanan. Satuan cap waktu adalah milidetik.
CatatanParameter ini digunakan ketika tabel seri waktu digunakan sebagai tabel sumber. Parameter ini opsional. Nilai default menunjukkan bahwa semua versi dibaca.
Tabel berikut menjelaskan parameter-parameter TxtFileWriter yang harus dimodifikasi.
Parameter
Deskripsi
path
Path file yang diekspor di sistem.
fileName
Nama file yang diekspor, termasuk ekstensi nama file. Contoh:
output.csv.writeMode
Mode di mana TxtFileWriter memproses data sebelum menulis data. Nilai yang valid:
truncate: menghapus semua file yang namanya memiliki awalan dengan nilai parameter fileName di direktori yang ditentukan sebelum menulis data.
append: tidak memproses data sebelum menulis data. Data langsung ditulis ke file yang namanya ditentukan menggunakan parameter fileName. Ini memastikan bahwa nama file tidak bertabrakan.
nonConflict: melaporkan kesalahan dan menghentikan operasi jika file yang namanya memiliki awalan dengan nilai parameter fileName ada di direktori.
fileFormat
Format file keluaran. Nilai yang valid:
csvdantext.
Langkah 4: Jalankan tugas DataX
Jalankan perintah berikut untuk memulai tugas ekspor data:
python3 datax.py tablestore_to_csv.jsonSetelah tugas selesai, status eksekusi keseluruhan akan dicetak.
2025-03-19 17:21:05.146 [job-0] INFO StandAloneJobContainerCommunicator - Total 200000 records, 23086634 bytes | Speed 1.10MB/s, 10000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.222s | All Task WaitReaderTime 18.392s | Percentage 100.00% 2025-03-19 17:21:05.147 [job-0] INFO JobContainer - Task Start Time : 2025-03-19 17:20:43 Task End Time : 2025-03-19 17:21:05 Task Duration : 21s Average Transfer Speed : 1.10MB/s Record Write Speed : 10000rec/s Total Records Read : 200000 Failed Records : 0Verifikasi hasil ekspor.
Setelah tugas selesai, periksa path yang ditentukan (seperti
/tmp/export/) untuk memastikan apakah file CSV yang diekspor sesuai dengan harapan Anda.output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ceCatatanNama file CSV yang diekspor akan memiliki akhiran acak untuk membedakan file yang dihasilkan oleh beberapa thread. Anda perlu secara manual menghapus akhiran ini untuk mendapatkan file CSV standar.
Lampiran-Tabel sumber sampel
Lampiran 1: Tabel data
Nama tabel data sampel adalah orders. Tabel berikut menjelaskan skema tabel data.
Nama field | Tipe | Deskripsi |
order_id (kolom kunci utama) | String | ID pesanan. |
user_id | String | ID pengguna. |
sku_id | String | ID produk. |
price | Double | Harga satuan produk yang dibeli. |
num | Integer | Jumlah produk yang dibeli. |
total_price | Double | Total harga pesanan. |
order_status | String | Status pesanan. |
create_time | String | Waktu saat pesanan dibuat. |
modified_time | String | Waktu saat pesanan terakhir dimodifikasi. |
Lampiran 2: Tabel seri waktu
Nama tabel seri waktu sampel adalah vehicles_timeseriesdata. Tabel berikut menjelaskan skema tabel seri waktu.
Nama field | Tipe | Deskripsi |
_m_name | String | Nama besaran fisik atau metrik untuk data dalam seri waktu. |
_data_source | String | Pengidentifikasi sumber data untuk seri waktu. Bidang ini bisa dibiarkan kosong. |
_tags | String | Tag dari seri waktu. |
_time | Integer | Waktu saat data dilaporkan. |
vin_id | String | Nomor identifikasi kendaraan (VIN) dari kendaraan. |
mfrs | String | Produsen. |
model | String | Model kendaraan. |
speed | Double | Kecepatan saat ini kendaraan. |
gps | String | Koordinat GPS kendaraan dalam format |
mileage | Double | Jarak tempuh saat ini kendaraan. |
emission | Double | Nilai emisi. |