Tüm Ürünler
Search
Belge Merkezi

DataWorks:Lindorm veri kaynağı

Son Güncelleme:Oct 09, 2026

DataWorks Veri Entegrasyonu, Lindorm Reader ve Lindorm Writer eklentileri aracılığıyla çift yönlü veri aktarımını destekler. Bu konuda, DataWorks'ün Lindorm'dan nasıl veri okuduğu ve Lindorm'a nasıl veri yazdığı açıklanmaktadır.

Kapsam

Not

Lindorm çok modlu bir veritabanıdır. Daha fazla bilgi için Lindorm belgelerine bakın. DataWorks şu anda yalnızca geniş tablo motorunu ve hesaplama motorunu desteklemektedir.

Desteklenen alan türleri

Lindorm Reader ve Lindorm Writer, Lindorm veri türlerinin çoğunu destekler ancak bazı türler desteklenmez. Kullanmadan önce veri türlerinizi kontrol edin.

Aşağıdaki tabloda Lindorm Reader ve Lindorm Writer için Lindorm tür eşlemeleri listelenmiştir.


Tür kategorisi


Veri türü


Tamsayı


INT、LONG、SHORT


Kayan nokta


DOUBLE、FLOAT、DOUBLE


Dize


STRING


Tarih ve saat


DATE


Boole


BOOLEAN


İkili


BINARYSTRING

Veri senkronizasyonu görevlerini geliştirme

Bir senkronizasyon görevinin yapılandırılmasına ilişkin giriş noktası ve yordam hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.

Tek tablo toplu iş senkronizasyonu

Tek tablo gerçek zamanlı senkronizasyonu

Tam veritabanı gerçek zamanlı senkronizasyonu

Ek: Örnek komut dosyaları ve parametreler

Kod düzenleyiciyi kullanarak toplu iş senkronizasyonu görevini yapılandırma

Kod düzenleyiciyi kullanarak bir toplu iş senkronizasyonu görevi yapılandırmak istiyorsanız, komut dosyasındaki ilgili parametreleri birleşik komut dosyası biçimi gereksinimlerine göre ayarlamanız gerekir. Daha fazla bilgi için bkz. Komut dosyası modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak bir toplu iş senkronizasyonu görevi yapılandırırken veri kaynakları için belirtmeniz gereken parametreleri açıklamaktadır.

Reader örnek komut dosyaları

  • Geniş tablo motorundaki bir Lindorm SQL Table'dan yerel depolama alanına veri çıkaran bir iş yapılandırın.

    {
        "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": {
            //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
            "byte": 1048576
          }
          //Error limits
          "errorLimit": {
            //Maximum number of error records. The job fails when this limit is exceeded.
            "record": 0,
            //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Geniş tablo motorundaki bir Lindorm HBaseLike (WideColumn) tablosundan yerel depolama alanına veri çıkaran bir iş yapılandırın.

    {
        "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": {
            //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
            "byte": 1048576
          }
            //Error limits
            "errorLimit": {
            //Maximum number of error records. The job fails when this limit is exceeded.
            "record": 0,
            //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%。
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Bir hesaplama motoru tablosundan yerel depolama alanına veri çıkaran bir iş yapılandırın.

    {
        "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": {
            //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
            "byte": 1048576
          }
            //Error limits
            "errorLimit": {
            //Maximum number of error records. The job fails when this limit is exceeded.
            "record": 0,
            //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%。
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }

Reader komut dosyası parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

mode

Yalnızca geniş tablo motoru içindir. Veri okuma modunu belirtir: sabit sütun modu FixedColumn veya dinamik sütun modu DynamicColumn.

Evet

FixedColumn

tableMode

Yalnızca geniş tablo motoru içindir. Standart tablo SQL modu table veya geniş sütun modu wideColumn olarak ayarlanır. Varsayılan değer table'dir. table modunu seçerseniz bu parametreyi boş bırakabilirsiniz.

Hayır

Varsayılan olarak boş

table

Okunacak Lindorm tablosunun adı. Lindorm tablo adları büyük/küçük harfe duyarlıdır.

Evet

Yok

encoding

Yalnızca geniş tablo motoru içindir. Kodlama biçimi; UTF-8 veya GBK. Genellikle ikili veri olarak saklanan Lindorm byte[] türünü String'e dönüştürmek için kullanılır.

Hayır

UTF-8

caching

Yalnızca geniş tablo motoru içindir. Her bir toplu işte alınan kayıt sayısı. Bu ayar, veri senkronizasyon sistemi ile Lindorm arasındaki ağ etkileşimlerini büyük ölçüde azaltarak genel aktarım hızını artırabilir. Çok yüksek bir değer, Lindorm sunucusunu aşırı yükleyebilir veya senkronizasyon sürecinde bellek yetersizliği (OOM) hatasına neden olabilir.

Hayır

100

selects

Yalnızca geniş tablo motoru içindir. Tablo türü veriler şu anda otomatik parça bölme özelliğini desteklemez ve varsayılan olarak tek eşzamanlı görevle çalışır. Bu nedenle, verileri manuel olarak bölmek üzere selects parametresini yapılandırın. Örnek:

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))"
    ],

Sınırlamalar:

  • Sorgu koşullarında yalnızca birincil anahtar sütunları ve dizine eklenmiş sütunlar kullanılabilir. Normal sütunlardaki koşullar tam tablo taramasını tetikler ve kaynak kümenin kararlılığını etkiler.

  • Bir tabloda birden fazla birincil anahtar sütunu bulunduğunda, sorgu koşulları sol ön ek kuralına uymalıdır: ilk n-1 ardışık birincil anahtar sütununun tamamı eşitlik koşulu kullanmalıdır. Örneğin, tablonun birincil anahtarı [id, order_time], normal sütunları [type, data] ve type sütununda ikincil bir dizin olduğunu varsayalım.

    • Önerilen sözdizimi örnekleri:

      SQL sözdizimi

      Eklenti sözdizimi

      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\"))
    • Önerilmeyen sözdizimi örnekleri:

      SQL sözdizimi

      Eklenti sözdizimi

      Neden

      where order_time >= 1234567 and order_time < 5678910

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

      En soldaki birincil anahtar sütunu id eksik.

      where id > 1 and order_time > 1234567

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

      En soldaki birincil anahtar sütunu id eşitlik koşulu kullanmıyor.

      where data > 'xxx'

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

      data alanı birincil anahtar sütunu değildir.

Hayır

Yok

session

Yalnızca hesaplama motoru içindir. Oturum düzeyindeki iş parametreleri, örneğin set hive.execution.engine=tez.

Hayır

Yok

splitPk

Yalnızca hesaplama motoru içindir. Bir hesaplama motoru tablosunu okumak için kullanılan bölme anahtarı. Belirtildiğinde, splitPk verilerin bölünmesinde kullanılan alanı belirler ve veri senkronizasyonu verimliliği artırmak için eşzamanlı görevler başlatır.

  • splitPk belirtilmediğinde, yani splitPk yoksa veya splitPk boşsa, veri senkronizasyonu tabloyu tek bir kanal üzerinden okur.

  • Şu anda splitPk yalnızca tamsayı verileri üzerinde bölme işlemini destekler; dizeler, kayan noktalı sayılar, tarihler veya diğer türler üzerinde bölme yapmaz.

Hayır

Yok

columns

Okunacak alanların listesi. Sütunların bir alt kümesini seçebilir ve sıralarını değiştirebilirsiniz. Sütun seçimi yalnızca seçilen sütunları dışa aktarır; sıralama değiştirme ise sütunları tablo şemasından farklı bir sırayla dışa aktarır.

  • Tablo türü bir tablo için yalnızca sütun adlarını girin. Şema, tablo meta verilerinden otomatik olarak alınır. Örnek:

    [
        "id",
        "name",
        "age",
        "birthday",
        "gender"
    ]
  • HBaseLike (widecolumn) tablosu için aşağıdaki biçimi kullanın:

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

Evet

Yok

Writer örnek komut dosyaları

  • MySQL'den geniş tablo motorundaki bir Lindorm SQL Table'a veri yazan bir iş yapılandırın.

    {
      "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": {
          //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
          "byte": 1048576
        },
        //Error limits
        "errorLimit": {
          //Maximum number of error records. The job fails when this limit is exceeded.
          "record": 0,
          //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%。
          "percentage": 0.02
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • MySQL'den geniş tablo motorundaki bir Lindorm HBaseLike (WideColumn) tablosuna veri yazan bir iş yapılandırın.

    {
        "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": [  //Map source fields in field order
                      "ROW|STRING", //Row key. This fixed configuration maps the first source field to the row key, such as id in this example.
                      "cf:name|STRING" //cf is the editable column family name; name is the editable destination column name
                ]
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting": {
            "jvmOption": "",
                    "errorLimit": {
                            "record": "0"
                    },
                    "speed": {
                        "concurrent": 3,
                        "throttle": false
                    }
        },
        "order": {
                "hops": [
                   {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
      }
  • MySQL'den bir hesaplama motoru tablosuna veri yazan bir iş yapılandırın.

    {
        "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"
                }
            ]
        }
      }

Writer komut dosyası parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

table

Veri yazılacak Lindorm tablosunun adı. Lindorm tablo adları büyük/küçük harfe duyarlıdır.

Evet

Yok

encoding

Yalnızca geniş tablo motoru içindir. Kodlama biçimi; UTF-8 veya GBK. Genellikle ikili veri olarak saklanan Lindorm byte[] türünü String'e dönüştürmek için kullanılır.

Hayır

UTF-8

columns

Yazılacak alanların listesi. Sütunların bir alt kümesini seçebilir ve sıralarını değiştirebilirsiniz. Sütun seçimi yalnızca seçilen sütunları dışa aktarır; sıralama değiştirme ise sütunları tablo şemasından farklı bir sırayla dışa aktarır.

  • Tablo türü bir tablo için yalnızca sütun adlarını girin. Şema, tablo meta verilerinden otomatik olarak alınır.

  • Widecolumn türü veya tablo türü bir tablo içindir.

Evet

Yok

nullMode

Yalnızca geniş tablo motoru içindir. Kaynaktan okunan bir değer null olduğunda, bunun nasıl işleneceğini belirtmek için Lindorm Writer'ın nullMode parametresini ayarlayın.

  • SKIP: Bu sütunu Lindorm'a yazmayın.

  • EMPTY_BYTES: Alan değeri null ise, karşılık gelen Lindorm alanına boş bir bayt dizisi yazın.

  • NULL: Null değeri yazın.

  • DELETE: Alan değeri null ise, karşılık gelen Lindorm alanını silin.

Hayır

EMPTY_BYTES

formatType

Yalnızca hesaplama motoru içindir. Senkronize edilecek tablonun türünü belirtir. Geçerli değerler:

  • iceberg

  • parquet

  • orc

Hayır

Yok