全部产品
Search
文档中心

Tablestore:Unduh data Tablestore ke file CSV lokal menggunakan DataX

更新时间:Aug 23, 2025

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.

    Penting

    Untuk 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 AliyunOTSFullAccess pada pengguna RAM, dan membuat pasangan AccessKey untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Gunakan Pasangan AccessKey Pengguna RAM untuk Mengakses Tablestore.

Prosedur

Catatan

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

  1. 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.

  2. 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_64

    Ubuntu

    apt update && apt upgrade
    apt install openjdk-8-jdk

Langkah 2: Unduh DataX

  1. Unduh paket DataX.

    wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
  2. Ekstrak paket tersebut.

    tar -zxvf datax.tar.gz

Untuk informasi tentang cara mengompilasi DataX sendiri, lihat Panduan Instalasi DataX.

Langkah 3: Buat file konfigurasi

  1. Masuk ke direktori bin DataX.

    cd datax/bin
  2. Buat file konfigurasi. Jika Anda menggunakan vim, sesuaikan perintah sesuai kebutuhan.

    vi tablestore_to_csv.json

    Kode 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.

      Catatan

      Jika 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_MIN dan INF_MAX. Jumlah kolom dalam titik virtual harus sama dengan jumlah kolom dalam kunci utama. INF_MIN menunjukkan negatif tak terhingga, yang lebih kecil dari nilai apa pun. INF_MAX menunjukkan positif tak terhingga, yang lebih besar dari nilai apa pun.

      Catatan

      Parameter 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.

      Catatan

      Parameter 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.

      Catatan

      Parameter 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: csv dan text.

Langkah 4: Jalankan tugas DataX

  1. Jalankan perintah berikut untuk memulai tugas ekspor data:

    python3 datax.py tablestore_to_csv.json

    Setelah 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                    :                   0
  2. Verifikasi 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_361f44c998ce
    Catatan

    Nama 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 latitude,longitude, dengan latitude mendahului longitude.

mileage

Double

Jarak tempuh saat ini kendaraan.

emission

Double

Nilai emisi.