全部产品
Search
文档中心

DataWorks:Sumber data Lindorm

更新时间:Dec 05, 2025

Data Integration DataWorks menggunakan plugin Lindorm Reader dan Lindorm Writer untuk membaca data dari serta menulis data ke Lindorm. Topik ini menjelaskan kemampuan baca dan tulis data yang disediakan DataWorks untuk Lindorm.

Penerapan

Catatan

Lindorm adalah database multi-model. Untuk informasi selengkapnya, lihat dokumentasi Lindorm. Saat ini, DataWorks hanya mendukung LindormTable dan mesin komputasi.

Tipe bidang yang didukung

Lindorm Reader dan Lindorm Writer mendukung sebagian besar tipe data Lindorm, tetapi beberapa tipe tidak didukung. Pastikan tipe data Anda termasuk dalam daftar yang didukung.

Tabel berikut mencantumkan konversi tipe data untuk Lindorm Reader dan Lindorm Writer.

Kategorisasi tipe

Tipe data

Integer

INT, LONG, SHORT

Bilangan titik mengambang

DOUBLE, FLOAT, DOUBLE

String

STRING

Tanggal dan waktu

DATE

Boolean

BOOLEAN

Biner

BINARYSTRING

Kembangkan tugas sinkronisasi data

Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Sinkronisasi offline tabel tunggal

Sinkronisasi real-time tabel tunggal

Sinkronisasi real-time basis data penuh

Lampiran: Demo skrip dan parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan format skrip terpadu. Untuk informasi selengkapnya, lihat Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengatur tugas sinkronisasi batch menggunakan editor kode.

Demo skrip Reader

  • Konfigurasikan pekerjaan untuk mengekstrak data dari tabel SQL LindormTable Lindorm ke mesin lokal.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "lindorm",
                "parameter": {
                    "mode": "FixedColumn",
                    "caching": 128,
                    "column": [
                       "id",
                      "value" 
                    ],
                    "envType": 1,
                    "datasource": "lindorm",
                    "tableMode": "tableService",
                    "table": "lindorm_table"
                },
                "name": "lindormreader",
                "category": "reader"
            },
            {
                "stepType": "mysql",
                "parameter": {
                    "postSql": [],
                    "datasource": "lindorm",
                    "session": [],
                    "envType": 1,
                    "column": [
                        "id",
                        "value" 
                    ],
                    "socketTimeout": 3600000,
                    "writeMode": "insert",
                    "batchSize": 1024,
                    "encoding": "UTF-8",
                    "table": "",
                    "preSql": []
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "jvmOption": "",
            "executeMode": null,
            "errorLimit": {
                "record": "0"
            },
            "speed": {
            // Mengatur kecepatan transmisi dalam byte/s. DataX berusaha mencapai tetapi tidak melebihi kecepatan ini.
            "byte": 1048576
          }
          // Batas error
          "errorLimit": {
            // Jumlah maksimum catatan error. Jika jumlah catatan error melebihi nilai ini, pekerjaan gagal.
            "record": 0,
            // Persentase maksimum catatan error. Misalnya, 1.0 berarti 100%, dan 0.02 berarti 2%.
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Konfigurasikan pekerjaan untuk mengekstrak data dari tabel wide-column LindormTable Lindorm HBaseLike ke mesin lokal.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "lindorm",
                "parameter": {
                    "mode": "FixedColumn",
                    "column":  [
                         "STRING|rowkey",
                          "INT|f:a"
                    ],
                    "envType": 1,
                    "datasource": "lindorm",
                    "tableMode": "wideColumn",
                    "table":"lindorm_table"
                },
                "name": "lindormreader",
                "category": "reader"
            },
            {
                "stepType": "mysql",
                "parameter": {
                    "postSql": [],
                    "datasource": "_IDB.TAOBAO",
                    "session": [],
                    "envType": 1,
                    "column": [
                        "id",
                        "value"
                    ],
                    "socketTimeout": 3600000,
                    "guid": "",
                    "writeMode": "insert",
                    "batchSize": 1024,
                    "encoding": "UTF-8",
                    "table": "",
                    "preSql": []
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "jvmOption": "",
            "executeMode": null,
            "errorLimit": {
                "record": "0"
            },
            "speed": {
            // Mengatur kecepatan transmisi dalam byte/s. DataX berusaha mencapai tetapi tidak melebihi kecepatan ini.
            "byte": 1048576
          }
            // Batas error
            "errorLimit": {
            // Jumlah maksimum catatan error. Jika jumlah catatan error melebihi nilai ini, pekerjaan gagal.
            "record": 0,
            // Persentase maksimum catatan error. Misalnya, 1.0 berarti 100%, dan 0.02 berarti 2%.
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Konfigurasikan pekerjaan untuk mengekstrak data dari tabel mesin komputasi ke mesin lokal.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "lindorm",
                "parameter": {
                   "datasource": "lindorm_datasource",
                    "column": [
                       "id",
                       "value"
                    ],
                    "tableComment": "",
                    "where": "",
                    "session": [],
                    "splitPk": "id",
                    "table": "auto_ob_149912212480"
                },
                "name": "lindormreader",
                "category": "reader"
            },
            {
                "stepType": "mysql",
                "parameter": {
                    "postSql": [],
                    "datasource": "_IDB.TAOBAO",
                    "session": [],
                    "envType": 1,
                    "column": [
                        "id",
                        "value"
                    ],
                    "socketTimeout": 3600000,
                    "guid": "",
                    "writeMode": "insert",
                    "batchSize": 1024,
                    "encoding": "UTF-8",
                    "table": "",
                    "preSql": []
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "jvmOption": "",
            "executeMode": null,
            "errorLimit": {
                "record": "0"
            },
            "speed": {
            // Mengatur kecepatan transmisi dalam byte/s. DataX berusaha mencapai tetapi tidak melebihi kecepatan ini.
            "byte": 1048576
          }
            // Batas error
            "errorLimit": {
            // Jumlah maksimum catatan error. Jika jumlah catatan error melebihi nilai ini, pekerjaan gagal.
            "record": 0,
            // Persentase maksimum catatan error. Misalnya, 1.0 berarti 100%, dan 0.02 berarti 2%.
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

mode

Khusus untuk LindormTable. Menentukan mode pembacaan data. Nilai yang valid adalah FixedColumn dan DynamicColumn.

Ya

FixedColumn

tableMode

Khusus untuk LindormTable. Nilai yang valid adalah table untuk mode SQL tabel standar dan wideColumn untuk mode tabel lebar. Nilai default adalah table. Jika Anda memilih mode table, Anda tidak perlu menentukan parameter ini.

Tidak

Tidak ditentukan secara default

table

Nama tabel Lindorm tempat data dibaca. Nama tabel bersifat case-sensitive.

Ya

Tidak ada

encoding

Khusus untuk LindormTable. Kodek. Nilai yang valid adalah UTF-8 dan GBK. Parameter ini biasanya digunakan untuk mengonversi tipe byte[] Lindorm yang disimpan dalam bentuk biner menjadi tipe String.

Tidak

UTF-8

caching

Khusus untuk LindormTable. Jumlah catatan yang diambil dalam satu batch. Nilai yang lebih besar dapat secara signifikan mengurangi interaksi jaringan antara sistem sinkronisasi data dan Lindorm, meningkatkan throughput keseluruhan. Jika nilai ini terlalu besar, dapat menyebabkan tekanan berlebihan pada server Lindorm atau error kehabisan memori (OOM) dalam proses sinkronisasi data.

Tidak

100

selects

Khusus untuk LindormTable. Sistem tidak secara otomatis melakukan sharding data untuk tipe tabel yang sedang dibaca saat ini. Secara default, pekerjaan berjalan dengan satu proses konkuren. Anda harus mengonfigurasi parameter selects secara manual untuk melakukan sharding data. Contoh:

selects": [
    "where(compare(\"id\", LESS, 5))",
    "where(and(compare(\"id\", GREATER_OR_EQUAL, 5), compare(\"id\", LESS, 10)))",
    "where(compare(\"id\", GREATER_OR_EQUAL, 10))"
    ],

Batasan:

  • Hanya kolom kunci primer dan kolom indeks yang dapat digunakan sebagai kondisi kueri. Jika Anda menggunakan kolom standar sebagai kondisi kueri, hal ini akan memicu pemindaian tabel penuh, yang memengaruhi stabilitas kluster sumber.

  • Jika sebuah tabel memiliki beberapa kolom kunci primer, kondisi kueri harus mengikuti aturan awalan kiri. Artinya, n-1 kolom kunci primer berturut-turut pertama di sebelah kiri harus menggunakan kondisi kesetaraan. Misalnya, asumsikan sebuah tabel memiliki kunci primer [id, order_time] dan kolom standar [type, data]. Indeks sekunder telah dibuat untuk kolom type.

    • Contoh sintaks yang direkomendasikan:

      Sintaks SQL

      Sintaks Plugin

      where id >= 1 and id < 100

      where(and(compare(\"id\", GREATER_OR_EQUAL, 1), compare(\"id\", LESS, 100)))

      where id = 1 and order_time > 1234567

      where(and(compare(\"id\", EQUAL, 1), compare(\"order_time\", GREATER, 1234567)))

      where type = 'pay'

      where(compare(\"type\", EQUAL, \"pay\"))
    • Contoh sintaks yang tidak direkomendasikan:

      Sintaks SQL

      Sintaks Plugin

      Alasan tidak direkomendasikan

      where order_time >= 1234567 and order_time < 5678910

      where(and(compare(\"order_time\", GREATER_OR_EQUAL, 1234567), compare(\"order_time\", LESS, 5678910)))

      Kolom kunci primer paling kiri id tidak ada.

      where id > 1 and order_time > 1234567

      where(and(compare(\"id\", GREATER, 1), compare(\"order_time\", GREATER, 1234567)))

      Kolom kunci primer paling kiri id tidak menggunakan kondisi kesetaraan.

      where data > 'xxx'

      where(compare(\"data\", GREATER, \"xxx\"))

      Bidang data bukan kolom kunci primer.

Tidak

Tidak ada

session

Khusus untuk mesin komputasi. Parameter pekerjaan tingkat session, seperti set hive.execution.engine=tez.

Tidak

Tidak ada

splitPk

Khusus untuk mesin komputasi. Kunci shard. Parameter ini khusus untuk membaca data dari tabel mesin komputasi. Jika Anda menentukan splitPk, data akan di-shard berdasarkan bidang yang ditentukan. Sinkronisasi data memulai tugas konkuren untuk menyinkronkan data, yang meningkatkan efisiensi.

  • Jika Anda tidak menentukan splitPk, atau jika nilai splitPk kosong, sinkronisasi data menggunakan satu saluran untuk menyinkronkan data tabel.

  • Saat ini, splitPk hanya mendukung sharding untuk data integer. Tidak mendukung string, bilangan titik mengambang, tanggal, atau tipe data lainnya.

Tidak

Tidak ada

columns

Daftar bidang yang akan dibaca. Anda dapat memotong kolom dan mengubah urutannya. Memotong kolom berarti Anda dapat memilih subset kolom untuk diekspor. Mengubah urutan kolom berarti Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

  • Untuk tabel tipe table, cukup tentukan nama kolom saja. Informasi skema secara otomatis diperoleh dari metadata tabel. Contoh:

    [
        "id",
        "name",
        "age",
        "birthday",
        "gender"
    ]
  • Untuk tabel tipe HBaseLike (widecolumn). Contoh:

    [
        "STRING|rowkey",
        "INT|f:a",
        "DOUBLE|f:b"
    ]

Ya

Tidak ada

Demo skrip Writer

  • Konfigurasikan pekerjaan untuk menulis data dari sumber data MySQL ke tabel SQL LindormTable Lindorm.

    {
      "type": "job",
      "version": "2.0",
      "steps": [
        {
          "stepType": "mysql",
          "parameter": {
            "checkSlave": true,
            "datasource": " ",
            "envType": 1,
            "column": [
              "id",
              "value"
            ],
            "socketTimeout": 3600000,
            "masterSlave": "slave",
            "connection": [
              {
                "datasource": " ",
                "table": []
              }
            ],
            "where": "",
            "splitPk": "",
            "encoding": "UTF-8",
            "print": true
          },
          "name": "mysqlReader",
          "category": "reader"
        },
        {
          "stepType": "lindorm",
          "parameter": {
            "nullMode": "skip",
            "datasource": "lindorm_datasource",
            "envType": 1,
            "column": [
              "id",
              "value"
            ],
            "dynamicColumn": "false",
            "table": "lindorm_table",
            "encoding": "utf8"
          },
          "name": "Writer",
          "category": "writer"
        }
      ],
      "setting": {
        "jvmOption": "",
        "executeMode": null,
        "speed": {
          // Mengatur kecepatan transmisi dalam byte/s. DataX berusaha mencapai tetapi tidak melebihi kecepatan ini.
          "byte": 1048576
        },
        // Batas error
        "errorLimit": {
          // Jumlah maksimum catatan error. Jika jumlah catatan error melebihi nilai ini, pekerjaan gagal.
          "record": 0,
          // Persentase maksimum catatan error. Misalnya, 1.0 berarti 100%, dan 0.02 berarti 2%.
          "percentage": 0.02
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Konfigurasikan pekerjaan untuk menulis data dari sumber data MySQL ke tabel wide-column LindormTable Lindorm HBaseLike.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "mysql",
                "parameter": {
                    "envType": 0,
                    "datasource": " ",
                    "column": [
                         "id",
                         "value"
                    ],
                    "connection": [
                        {
                            "datasource": " ",
                            "table": []
                        }
                    ],
                    "where": "",
                    "splitPk": "",
                    "encoding": "UTF-8"
                },
                "name": "Reader",
                "category": "reader"
    
            },
          {
              "stepType": "lindorm",
              "parameter": {
                "datasource": "lindorm_datasource",
                "table": "xxxxxx",
                "encoding": "utf8",
                "nullMode": "skip",
                "dynamicColumn": "false",
                "caching": 128,
                "column": [  // Memetakan bidang dari sumber secara berurutan.
                      "ROW|STRING", // rowkey. Ini adalah konfigurasi tetap. Bidang pertama dari sumber dipetakan ke rowkey. Dalam contoh ini, bidang id dipetakan ke rowkey.
                      "cf:name|STRING" // cf menentukan nama keluarga kolom, yang dapat Anda ubah. name menentukan nama kolom di tujuan, yang dapat Anda ubah.
                ]
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting": {
            "jvmOption": "",
                    "errorLimit": {
                            "record": "0"
                    },
                    "speed": {
                        "concurrent": 3,
                        "throttle": false
                    }
        },
        "order": {
                "hops": [
                   {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
      }
  • Konfigurasikan pekerjaan untuk menulis data dari sumber data MySQL ke tabel mesin komputasi.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "mysql",
                "parameter": {
                    "envType": 0,
                    "datasource": " ",
                    "column": [
                         "id",
                         "value"
                    ],
                    "connection": [
                        {
                            "datasource": " ",
                            "table": []
                        }
                    ],
                    "where": "",
                    "splitPk": "",
                    "encoding": "UTF-8"
                },
                "name": "Reader",
                "category": "reader"
    
            },
          {
              "stepType": "lindorm",
              "parameter": {
                  "datasource": "lindorm_datasource",
                  "table": "xxxxxx",
                  "column": [ 
                     "id",
                    "value"
                   ],
                  "formatType": "ICEBERG"
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting": {
            "jvmOption": "",
                    "errorLimit": {
                            "record": "0"
                    },
                    "speed": {
                        "concurrent": 3,
                        "throttle": false
                    }
        },
        "order": {
                "hops": [
                   {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
      }

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

table

Nama tabel Lindorm tempat data ditulis. Nama tabel bersifat case-sensitive.

Ya

Tidak ada

encoding

Menentukan kodek untuk LindormTable. Nilai yang valid adalah UTF-8 dan GBK. Parameter ini biasanya digunakan untuk mengonversi tipe byte[] Lindorm yang disimpan dalam bentuk biner menjadi tipe String.

Tidak

UTF-8

columns

Menentukan daftar bidang yang akan ditulis. Anda dapat memilih subset kolom untuk diekspor (memotong kolom) atau mengubah urutan kolom agar berbeda dari skema tabel.

  • Untuk tabel tipe table, cukup tentukan nama kolom. Informasi skema akan diambil secara otomatis dari metadata tabel.

  • Untuk tabel wide-column.

Ya

Tidak ada

nullMode

Parameter ini hanya berlaku untuk LindormTable dan menentukan cara menangani nilai null dari data sumber.

  • SKIP: Tidak menulis kolom ke Lindorm.

  • EMPTY_BYTES: Menulis array byte kosong ke bidang yang sesuai di Lindorm jika nilai bidang tersebut null.

  • NULL: Menulis nilai null.

  • DELETE: Menghapus bidang yang sesuai di Lindorm jika nilai bidang tersebut null.

Tidak

EMPTY_BYTES

formatType

Parameter ini hanya berlaku untuk mesin komputasi dan menentukan format tabel untuk tugas sinkronisasi. Nilai yang valid:

  • iceberg

  • parquet

  • orc

Tidak

Tidak ada