All Products
Search
Document Center

DataWorks:OSS

Last Updated:Apr 23, 2026

Sumber data OSS menyediakan akses baca dan tulis ke OSS. Topik ini menjelaskan cara DataWorks mendukung sinkronisasi data OSS.

Tipe field dan batasan yang didukung

Baca data batch

OSS Reader membaca data dari OSS dan mengonversinya ke format yang dapat diproses oleh Data Integration. Karena OSS merupakan layanan penyimpanan data tidak terstruktur, reader mendukung fitur-fitur berikut.

Didukung

Tidak didukung

  • Mendukung file TXT, yang harus memiliki skema tabel dua dimensi.

  • Mendukung file mirip CSV dengan delimiter kustom.

    Catatan

    Format teks (TXT dan CSV) mendukung kompresi gzip, bzip2, dan zip.

    Anda tidak dapat mengemas beberapa file ke dalam satu arsip terkompresi.

  • Mendukung file dalam format ORC dan Parquet.

  • Mendukung pembacaan berbagai tipe data (direpresentasikan sebagai STRING), pemangkasan kolom, dan konstanta kolom.

  • Mendukung pembacaan rekursif dan penyaringan nama objek.

  • Mendukung pembacaan konkuren dari beberapa objek.

  • Reader tidak dapat membaca satu objek (file) secara konkuren menggunakan multiple thread.

  • Satu objek terkompresi tidak mendukung pembacaan multi-threaded konkuren.

Penting
  • Saat menyiapkan data di OSS, file CSV harus sesuai dengan format CSV standar. Misalnya, Anda harus melakukan escape tanda kutip ganda (") dalam kolom dengan menggantinya menjadi dua tanda kutip ganda (""); jika tidak, kesalahan parsing dapat terjadi. Jika file berisi beberapa delimiter, kami merekomendasikan penggunaan tipe file TXT.

  • OSS adalah sumber data tidak terstruktur yang menyimpan data sebagai file. Sebelum menjalankan tugas sinkronisasi, pastikan struktur field dikonfigurasi dengan benar. Jika struktur data sumber berubah, Anda harus memperbarui konfigurasi tugas untuk mencegah data menjadi kacau.

Tulis data batch

OSS Writer mengonversi data yang sesuai dengan Data Integration dan menuliskannya ke OSS sebagai file teks. Karena OSS merupakan layanan penyimpanan data tidak terstruktur, writer mendukung fitur-fitur berikut.

Didukung

Tidak didukung

  • Mendukung penulisan data ke file teks yang memiliki skema tabel dua dimensi. Menulis file yang berisi objek besar biner (BLOB), seperti video dan gambar, tidak didukung.

  • Mendukung file mirip CSV dengan delimiter kustom.

  • Mendukung file dalam format ORC dan Parquet.

    Catatan

    Dalam editor kode, kompresi SNAPPY didukung.

  • Mendukung penulisan multi-threaded, di mana setiap thread menulis ke part-file terpisah.

  • Mendukung rotasi file, di mana file baru dibuat untuk penulisan berikutnya setelah ukuran file saat ini melebihi batas tertentu.

  • Penulisan konkuren ke satu file tidak didukung.

  • Karena OSS tidak menyediakan tipe data native, OSS Writer menulis semua data sebagai tipe STRING ke objek OSS.

  • Anda tidak dapat menulis data ke bucket OSS yang kelas penyimpanannya adalah Cold Archive.

  • Satu objek (file) tidak boleh melebihi 100 GB.

Kategori

Tipe kolom

Integer

LONG

String

STRING

Floating-point

DOUBLE

Boolean

BOOLEAN

Date and time

DATE

Tulis data real-time

  • Mendukung penulisan data real-time.

  • Anda dapat melakukan penulisan real-time dari satu tabel ke format data lake berikut: Hudi (0.12.x), Paimon, dan Iceberg.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Manajemen sumber data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Catatan

Konfigurasi tugas sinkronisasi data

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

Sinkronisasi batch tabel tunggal

Sinkronisasi real-time tabel tunggal

Lihat Konfigurasi tugas sinkronisasi real-time tabel tunggal.

Sinkronisasi database penuh

Lihat Konfigurasi tugas sinkronisasi batch database penuh dan Konfigurasi tugas sinkronisasi real-time database penuh.

FAQ

Apakah ada batas file untuk membaca dari OSS?

Bagaimana cara menangani data kotor saat membaca file CSV multi-delimiter?

Lampiran: Contoh skrip dan parameter

Konfigurasi tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Gunakan Editor Kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip reader umum

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"oss",// Nama plugin.
            "parameter":{
                "nullFormat":"",// String yang merepresentasikan nilai null.
                "compress":"",// Jenis kompresi.
                "datasource":"",// Sumber data.
                "column":[// Definisi kolom.
                    {
                        "index":0,// Indeks kolom. Dimulai dari 0.
                        "type":"string"// Tipe data.
                    },
                    {
                        "index":1,
                        "type":"long"
                    },
                    {
                        "index":2,
                        "type":"double"
                    },
                    {
                        "index":3,
                        "type":"boolean"
                    },
                    {
                        "format":"yyyy-MM-dd HH:mm:ss", // Format waktu. Diperlukan ketika 'type' adalah 'date'.
                        "index":4,
                        "type":"date"
                    }
                ],
                "skipHeader":"",// Apakah akan melewati header di file mirip CSV.
                "encoding":"",// Pengkodean karakter.
                "fieldDelimiter":",",// Delimiter field.
                "fileFormat": "",// Format file.
                "object":[]// Awalan objek untuk file yang akan dibaca.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":""// Jumlah maksimum catatan error yang diizinkan.
        },
        "speed":{
            "throttle":true,// Jika true, mengaktifkan Pembatasan kecepatan. Jika false, parameter 'mbps' diabaikan.
            "concurrent":1, // Konkurensi job.
            "mbps":"12"// Batas kecepatan Pembatasan kecepatan dalam MB/s (1 mbps = 1 MB/s).
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Baca file ORC atau Parquet dari OSS

Anda dapat membaca file ORC atau Parquet dari OSS dengan menggunakan kembali HDFS reader. Untuk melakukannya, tentukan parameter standar OSS reader bersama dengan parameter path (untuk ORC) dan fileFormat (untuk ORC dan Parquet).

  • Contoh ini menunjukkan cara membaca data dalam format ORC dari OSS.

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "orc",
    "path": "/tests/case61/orc__691b6815_9260_4037_9899_****",
    "column": [
    {
    "index": 0,
    "type": "long"
    },
    {
    "index": "1",
    "type": "string"
    },
    {
    "index": "2",
    "type": "string"
    }
    ]
    }
    }
  • Contoh ini menunjukkan cara membaca data dalam format Parquet dari OSS.

    {
      "type":"job",
        "version":"2.0",
        "steps":[
        {
          "stepType":"oss",
          "parameter":{
            "nullFormat":"",
            "compress":"",
            "fileFormat":"parquet",
            "path":"/*",
            "parquetSchema":"message m { optional BINARY registration_dttm (UTF8); optional Int64 id; optional BINARY first_name (UTF8); optional BINARY last_name (UTF8); optional BINARY email (UTF8); optional BINARY gender (UTF8); optional BINARY ip_address (UTF8); optional BINARY cc (UTF8); optional BINARY country (UTF8); optional BINARY birthdate (UTF8); optional DOUBLE salary; optional BINARY title (UTF8); optional BINARY comments (UTF8); }",
            "column":[
              {
                "index":"0",
                "type":"string"
              },
              {
                "index":"1",
                "type":"long"
              },
              {
                "index":"2",
                "type":"string"
              },
              {
                "index":"3",
                "type":"string"
              },
              {
                "index":"4",
                "type":"string"
              },
              {
                "index":"5",
                "type":"string"
              },
              {
                "index":"6",
                "type":"string"
              },
              {
                "index":"7",
                "type":"string"
              },
              {
                "index":"8",
                "type":"string"
              },
              {
                "index":"9",
                "type":"string"
              },
              {
                "index":"10",
                "type":"double"
              },
              {
                "index":"11",
                "type":"string"
              },
              {
                "index":"12",
                "type":"string"
              }
            ],
            "skipHeader":"false",
            "encoding":"UTF-8",
            "fieldDelimiter":",",
            "fieldDelimiterOrigin":",",
            "datasource":"wpw_demotest_oss",
            "envType":0,
            "object":[
              "wpw_demo/userdata1.parquet"
            ]
          },
          "name":"Reader",
          "category":"reader"
        },
        {
          "stepType":"odps",
          "parameter":{
            "partition":"dt=${bizdate}",
            "truncate":true,
            "datasource":"0_odps_wpw_demotest",
            "envType":0,
            "column":[
              "id"
            ],
            "emptyAsNull":false,
            "table":"wpw_0827"
          },
          "name":"Writer",
          "category":"writer"
        }
      ],
        "setting":{
        "errorLimit":{
          "record":""
        },
        "locale":"zh_CN",
          "speed":{
          "throttle":false,
            "concurrent":2
        }
      },
      "order":{
        "hops":[
          {
            "from":"Reader",
            "to":"Writer"
          }
        ]
      }
    }

Parameter skrip reader

Parameter

Deskripsi

Wajib

Bawaan

datasource

Menentukan nama sumber data. Dalam mode skrip, nilai ini harus sesuai dengan nama sumber data yang telah dikonfigurasi.

Ya

Tidak ada

object

Menentukan satu atau beberapa objek untuk disinkronkan dari OSS. Anda dapat menentukan objek menggunakan path eksplisit, wildcard, atau parameter dinamis.

1. Metode konfigurasi

  • Path eksplisit

    • Aturan dasar: Path harus dimulai dari Direktori root bucket dan tidak boleh mencakup nama bucket.

    • Tentukan satu file: Masukkan path lengkap file tersebut. Contoh: my_folder/my_file.txt.

    • Tentukan beberapa objek: Pisahkan path beberapa file atau folder dengan koma (,). Contoh: folder_a/file1.txt, folder_a/file2.txt.

  • Jalur wildcard

    • Anda dapat menggunakan wildcard untuk mencocokkan beberapa file dengan pola tertentu.

    • *: Mencocokkan nol atau lebih karakter.

    • ?: Mencocokkan tepat satu karakter.

    • Contoh:

      • abc*[0-9].txt mencocokkan file seperti abc0.txt, abc10.txt, dan abc_test_9.txt.

      • abc?.txt mencocokkan file seperti abc1.txt dan abcX.txt.

  • Path parameter dinamis

    • Sisipkan parameter penjadwalan ke dalam path untuk mengotomatiskan sinkronisasi data. Saat job dijalankan, sistem mengganti parameter ini dengan nilai aktualnya.

    • Contohnya, jika Anda mengonfigurasi path sebagai raw_data/${bizdate}/abc.txt, job dapat secara dinamis menyinkronkan folder untuk tanggal bisnis yang sesuai setiap hari.

    • Untuk informasi lebih lanjut tentang cara menggunakan parameter penjadwalan, lihat Sumber Parameter Penjadwalan dan Ekspresinya.

Penting
  • Gunakan wildcard dengan hati-hati. Menggunakan wildcard, terutama *, memicu pemindaian rekursif pada path OSS. Untuk jumlah file yang besar, hal ini dapat menghabiskan memori dan waktu yang signifikan serta dapat menyebabkan error out of memory. Hindari penggunaan wildcard luas di lingkungan produksi. Jika Anda mengalami masalah ini, pisahkan file ke direktori berbeda sebelum menyinkronkan.

  • Sistem sinkronisasi data memperlakukan semua objek yang disinkronkan dalam satu job sebagai satu tabel data. Anda harus memastikan bahwa semua objek sesuai dengan skema yang sama.

2. Konkurensi dan performa

Metode konfigurasi secara langsung menentukan konkurensi ekstraksi data:

  • Mode single-threaded: Saat Anda menentukan satu file tak terkompresi dengan path eksplisit, job mengekstraksi data dalam mode single-threaded.

  • Mode multi-threaded: Saat Anda menentukan beberapa file eksplisit atau mencocokkan beberapa file dengan wildcard, job menggunakan pembacaan konkuren untuk meningkatkan throughput ekstraksi secara signifikan. Anda dapat mengonfigurasi konkurensi di pengaturan Channel.

Ya

Tidak ada

parquetSchema

Gunakan parameter ini untuk mendefinisikan skema file dalam format file Parquet. Parameter ini hanya berlaku ketika fileFormat diatur ke parquet. Setelah Anda menentukan parquetSchema, pastikan konfigurasi keseluruhan merupakan JSON yang valid.

message MessageTypeName {
required/optional, data_type, column_name;
......................;
}

Format untuk parquetSchema adalah sebagai berikut:

  • MessageTypeName: Nama tipe pesan.

  • Required/Optional: 'required' berarti field tidak boleh null, sedangkan 'optional' berarti boleh null. Kami merekomendasikan mengatur semua field ke 'optional'.

  • Tipe data: File Parquet mendukung tipe data berikut: BOOLEAN, Int32, Int64, Int96, FLOAT, DOUBLE, BINARY (gunakan BINARY untuk tipe string), dan fixed_len_byte_array.

  • Setiap definisi kolom harus diakhiri dengan titik koma, termasuk yang terakhir.

Berikut adalah contoh konfigurasi:

"parquetSchema": "message m { optional int32 minute_id; optional int32 dsp_id; optional int32 adx_pid; optional int64 req; optional int64 res; optional int64 suc; optional int64 imp; optional double revenue; }"

Tidak

Tidak ada

column

Menentukan daftar kolom yang akan dibaca. 'type' menentukan tipe data di sumber. 'index' menentukan indeks kolom berbasis nol dalam file teks. 'value' menentukan nilai konstan untuk kolom, yang menginstruksikan sistem untuk menghasilkan nilai tersebut alih-alih membacanya dari file sumber.

Secara default, Anda dapat membaca semua kolom sebagai tipe data STRING, seperti pada contoh berikut.

"column": ["*"]

Anda juga dapat menentukan detail untuk setiap kolom, seperti pada contoh berikut.

"column":
    {
       "type": "long",
       "index": 0    // Membaca integer dari kolom pertama file teks OSS.
    },
    {
       "type": "string",
       "value": "alibaba"  // Menghasilkan string konstan 'alibaba' untuk kolom saat ini.
    }
Catatan

Untuk setiap kolom yang Anda tentukan, 'type' wajib diisi, dan Anda harus menentukan salah satu dari 'index' atau 'value'.

Ya

Semua kolom dibaca sebagai tipe data STRING.

fileFormat

Format file objek sumber di OSS. Nilai yang valid adalah 'csv' dan 'text'. Kedua format mendukung delimiter kustom.

Ya

csv

fieldDelimiter

Delimiter field.

Catatan

Delimiter field wajib diisi. Jika tidak ditentukan, parameter ini menggunakan koma (,) sebagai nilai bawaan, yang juga merupakan nilai bawaan UI.

Tentukan karakter tak terlihat dengan representasi Unicode-nya (misalnya, \u001b). Anda juga dapat menggunakan format ini untuk karakter terlihat (misalnya, \u007c untuk simbol pipe).

Ya

,

lineDelimiter

Delimiter baris.

Catatan

Parameter ini hanya berlaku ketika 'fileFormat' diatur ke 'text'.

Tidak

Tidak ada

compress

Jenis kompresi file sumber. Jika parameter ini tidak diatur, file diasumsikan tidak terkompresi. Jenis yang didukung: gzip, bzip2, dan zip.

Tidak

Tidak ada kompresi

encoding

Pengkodean karakter file sumber.

Tidak

utf-8

nullFormat

Menentukan string dalam data sumber yang merepresentasikan nilai null. Hal ini diperlukan karena file teks tidak memiliki representasi standar untuk nilai null. Contohnya:

  • Jika Anda mengatur nullFormat:"null", string literal "null" dalam data sumber diperlakukan sebagai nilai null.

  • Jika Anda mengatur nullFormat:"\u0001", string "\u0001" (karakter tak terlihat) dalam data sumber diperlakukan sebagai nilai null.

  • Jika Anda menghilangkan parameter "nullFormat", sistem menulis data sumber ke tujuan apa adanya, tanpa konversi nilai apa pun.

Tidak

Tidak ada

skipHeader

File mirip CSV mungkin memiliki baris header yang berfungsi sebagai judul, yang perlu dilewati. Secara default, baris ini tidak dilewati. Parameter skipHeader tidak didukung dalam mode file terkompresi.

Tidak

false

csvReaderConfig

Peta pengaturan tambahan untuk CsvReader yang digunakan untuk mengurai file CSV. Jika parameter ini dihilangkan, CsvReader menggunakan pengaturan bawaannya.

Tidak

Tidak ada

Contoh skrip writer

{
    "type":"job",
    "version":"2.0",
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"oss",// Nama plugin.
            "parameter":{
                "nullFormat":"",// Mendefinisikan string mana yang diinterpretasikan sebagai nilai null.
                "dateFormat":"",// Format tanggal.
                "datasource":"",// Sumber data.
                "writeMode":"",// Mode penulisan.
                "writeSingleObject":"false", // Jika true, menulis semua data ke satu file OSS.
                "encoding":"",// Pengkodean file.
                "fieldDelimiter":",",// Delimiter field.
                "fileFormat":"",// Format file.
                "object":""// Awalan objek.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Batas error.
        },
        "speed":{
            "throttle":true,// Mengaktifkan Pembatasan kecepatan. Jika false, parameter 'mbps' diabaikan.
            "concurrent":1, // Konkurensi job.
            "mbps":"12"// Batas Pembatasan kecepatan dalam MB/s (1 mbps = 1 MB/s).
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Contoh skrip: Tulis file ORC atau Parquet ke OSS

Anda dapat menulis file ORC atau Parquet ke OSS menggunakan HDFS Writer. Selain parameter OSS Writer yang ada, metode ini menambahkan parameter konfigurasi tambahan, seperti path dan fileFormat. Untuk deskripsi parameter ini, lihat HDFS Writer.

Contoh berikut menunjukkan cara menulis file ORC atau Parquet ke OSS:

Penting

Kode berikut hanya untuk tujuan demonstrasi. Anda harus memodifikasi parameter agar sesuai dengan nama kolom dan tipe kolom spesifik Anda. Jangan salin kode ini untuk digunakan di lingkungan produksi.

  • Tulis file ORC ke OSS

    Saat ini Anda hanya dapat menulis file ORC di editor kode. Anda harus beralih ke editor kode untuk mengonfigurasi tugas. Atur parameter fileFormat ke orc, tentukan path file, dan definisikan setiap column menggunakan format {"name":"nama kolom Anda","type": "tipe kolom Anda"}.

    Tipe kolom ORC berikut didukung untuk penulisan offline:

    Tipe

    Status

    TINYINT

    Didukung

    SMALLINT

    Didukung

    INT

    Didukung

    BIGINT

    Didukung

    FLOAT

    Didukung

    DOUBLE

    Didukung

    TIMESTAMP

    Didukung

    DATE

    Didukung

    VARCHAR

    Didukung

    STRING

    Didukung

    CHAR

    Didukung

    BOOLEAN

    Didukung

    DECIMAL

    Didukung

    BINARY

    Didukung

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "orc",
    "path": "/tests/case61",
    "fileName": "orc",
    "writeMode": "append",
    "column": [
    {
    "name": "col1",
    "type": "BIGINT"
    },
    {
    "name": "col2",
    "type": "DOUBLE"
    },
    {
    "name": "col3",
    "type": "STRING"
    }
    ],
    "fieldDelimiter": "\t",
    "compress": "NONE",
    "encoding": "UTF-8"
    }
    }
  • Tulis file Parquet ke OSS

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "parquet",
    "path": "/tests/case61",
    "fileName": "test",
    "writeMode": "append",
    "fieldDelimiter": "\t",
    "compress": "SNAPPY",
    "encoding": "UTF-8",
    "parquetSchema": "message test { required int64 int64_col;\n required binary str_col (UTF8);\nrequired group params (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired binary value (UTF8);\n}\n}\nrequired group params_arr (LIST) {\nrepeated group list {\nrequired binary element (UTF8);\n}\n}\nrequired group params_struct {\nrequired int64 id;\n required binary name (UTF8);\n }\nrequired group params_arr_complex (LIST) {\nrepeated group list {\nrequired group element {\n required int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_complex (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired group value {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_struct_complex {\nrequired int64 id;\n required group detail {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}",
    "dataxParquetMode": "fields"
    }
    }

Parameter skrip writer

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data. Di editor kode, nilai ini harus sesuai dengan nama sumber data yang telah dikonfigurasi.

Ya

Tidak ada

object

Nama objek output di OSS. OSS menggunakan nama objek untuk mensimulasikan struktur direktori. Nama objek memiliki konvensi berikut:

  • Jika Anda mengatur "object": "datax", nama objek yang ditulis dimulai dengan datax, dan string acak ditambahkan sebagai akhiran.

  • Jika Anda mengatur "object": "cdo/datax", nama objek yang ditulis dimulai dengan /cdo/datax, dan string acak ditambahkan sebagai akhiran. OSS menggunakan garis miring (/) sebagai delimiter untuk mensimulasikan direktori.

Jika Anda tidak ingin akhiran UUID acak, konfigurasikan "writeSingleObject": "true". Untuk informasi lebih lanjut, lihat deskripsi parameter writeSingleObject.

Ya

Tidak ada

ossBlockSize

Ukuran bagian OSS. Nilai bawaan adalah 16 MB. Saat format output file adalah parquet atau ORC, Anda dapat mengonfigurasi parameter ini pada level yang sama dengan parameter object.

Karena unggah multi-bagian OSS dibatasi hingga 10.000 bagian, ukuran bagian bawaan membatasi ukuran file maksimum hingga 160 GB. Untuk mengunggah file yang lebih besar, Anda harus menambah ukuran bagian.

Tidak

16

writeMode

Menentukan cara OSS Writer menangani data yang sudah ada sebelum menulis:

  • truncate: Menghapus semua objek yang cocok dengan awalan yang ditentukan dalam parameter object sebelum menulis data baru. Misalnya, jika Anda mengatur "object":"abc", semua objek dengan awalan abc dihapus.

  • append: Tidak melakukan pembersihan apa pun. OSS Writer menulis data baru, menggunakan nama objek yang ditentukan sebagai awalan dan menambahkan UUID acak untuk memastikan nama unik. Misalnya, jika Anda menentukan nama objek sebagai DataIntegration, nama objek aktual mirip dengan DataIntegration_****_****_****.

  • nonConflict: Jika objek dengan nama yang cocok dengan awalan objek yang ditentukan sudah ada, job sinkronisasi gagal. Misalnya, jika Anda mengatur "object":"abc" dan objek bernama abc123 ada, error dilaporkan.

Ya

Tidak ada

writeSingleObject

Menentukan apakah akan menulis semua data ke satu objek.

  • true: Menulis semua data ke satu objek. Jika tidak ada data yang dibaca dari sumber, file kosong tidak dibuat.

  • false: Menulis data ke beberapa objek. Jika tidak ada data yang dibaca dari sumber dan header dikonfigurasi, file kosong yang hanya berisi header dibuat. Jika tidak, file kosong berukuran nol byte dibuat.

Catatan
  • Parameter ini tidak berlaku untuk format ORC dan Parquet. Anda tidak dapat menggunakannya untuk menulis data ke satu file untuk format ini ketika konkurensi lebih dari 1. Untuk menulis ke satu file, Anda harus mengatur konkurensi ke 1. Namun, ini tetap menambahkan akhiran acak ke nama objek dan dapat mengurangi performa job sinkronisasi.

  • Dalam beberapa kasus, seperti dengan sumber Hologres, data dibaca berdasarkan shard. Hal ini dapat menghasilkan beberapa file output bahkan ketika konkurensi diatur ke 1.

Tidak

false

fileFormat

Format file objek output. Format berikut didukung:

  • csv: Menulis data dalam format CSV ketat. Jika data mencakup delimiter field, data tersebut di-escape dengan diapit tanda kutip ganda (") sesuai aturan escaping CSV standar.

  • text: Menulis data sebagai teks biasa, menggunakan delimiter field yang ditentukan. Berbeda dengan csv, format ini tidak melakukan escape delimiter yang muncul dalam data.

  • parquet: Jika Anda menggunakan format file ini, Anda harus menentukan parameter parquetSchema untuk mendefinisikan skema data.

    Penting
  • ORC: Untuk menggunakan format ini, Anda harus beralih ke editor kode.

Tidak

text

compress

Menentukan format kompresi untuk file data yang ditulis ke OSS. Parameter ini harus dikonfigurasi di editor kode.

Penting

Parameter ini hanya berlaku untuk format file Parquet dan ORC, yang hanya mendukung kompresi SNAPPY. Format csv dan text tidak mendukung kompresi.

Tidak

Tidak ada

fieldDelimiter

Delimiter field untuk data output.

Tidak

,

encoding

Menentukan pengkodean karakter untuk file output.

Tidak

utf-8

parquetSchema

Diperlukan ketika fileFormat diatur ke parquet. Parameter ini mendefinisikan skema file Parquet output. Gunakan format berikut:

message MessageTypeName {
modifier, data_type, column_name;
......................;
}

Item konfigurasi dijelaskan sebagai berikut:

  • MessageTypeName: Nama tipe pesan.

  • modifier: required menunjukkan bahwa field tidak boleh berisi nilai null. optional menunjukkan bahwa field boleh berisi nilai null. Kami merekomendasikan mengatur semua field ke optional.

  • data_type: Tipe data Parquet yang didukung meliputi BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE, BINARY (untuk tipe string), dan FIXED_LEN_BYTE_ARRAY.

Catatan

Setiap definisi kolom harus diakhiri dengan titik koma, termasuk yang terakhir.

Contoh:

message m {
optional int64 id;
optional int64 date_id;
optional binary datetimestring;
optional int32 dspId;
optional int32 advertiserId;
optional int32 status;
optional int64 bidding_req_num;
optional int64 imp;
optional int64 click_num;
}

Tidak

Tidak ada

nullFormat

Dalam file teks, Anda tidak dapat menggunakan string standar untuk mendefinisikan nilai null. Sistem sinkronisasi data menyediakan parameter nullFormat untuk menentukan string yang merepresentasikan nilai null. Misalnya, jika Anda mengonfigurasi nullFormat="null" dan data sumber adalah null, sistem sinkronisasi data memperlakukannya sebagai field null.

Tidak

Tidak ada

header

Menentukan header yang akan ditulis ke file output. Nilainya harus berupa array JSON string, seperti ["id", "name", "age"].

Tidak

Tidak ada

maxFileSize (Konfigurasi lanjutan, tidak didukung di Antarmuka tanpa kode)

Mengontrol ukuran maksimum satu objek output sebelum file diputar, mirip dengan rotasi file log. Untuk unggah multi-bagian, ukuran bagian adalah 10 MB, yang juga berfungsi sebagai granularitas rotasi minimum. Nilai maxFileSize yang lebih kecil dari 10 MB diperlakukan sebagai 10 MB. InitiateMultipartUploadRequest OSS mendukung maksimal 10.000 bagian.

Saat file diputar, nama objek baru dibuat dengan menambahkan nomor urut (seperti _1, _2, atau _3) ke nama objek dasar, yang sudah mencakup awalan dan UUID acak.

Catatan
  • Unitnya adalah megabyte (MB).

  • Contoh: "maxFileSize": 300 mengatur ukuran file maksimum menjadi 300 MB.

  • Parameter maxFileSize hanya berlaku untuk format csv dan text. Karena ukuran dihitung berdasarkan data di memori, ukuran aktual objek di OSS mungkin tidak tepat.

Tidak

100.000

suffix (Konfigurasi lanjutan, tidak didukung di Antarmuka tanpa kode)

Menentukan akhiran yang akan ditambahkan ke nama objek output. Misalnya, jika Anda mengatur suffix ke .csv, nama objek akhir mirip dengan object-prefix_random-uuid.csv.

Tidak

Tidak ada

Lampiran: Konversi tipe data Parquet

Jika Anda tidak mengonfigurasi parquetSchema, DataWorks secara otomatis mengonversi tipe data sumber seperti yang ditunjukkan di bawah ini.

Tipe sumber

Tipe Parquet

Tipe logis Parquet

CHAR / VARCHAR / STRING

BINARY

UTF8

BOOLEAN

BOOLEAN

N/A

BINARY / VARBINARY

BINARY

N/A

DECIMAL

FIXED_LEN_BYTE_ARRAY

DECIMAL

TINYINT

INT32

INT_8

SMALLINT

INT32

INT_16

INT/INTEGER

INT32

N/A

BIGINT

INT64

N/A

FLOAT

FLOAT

N/A

DOUBLE

DOUBLE

N/A

DATE

INT32

DATE

TIME

INT32

TIME_MILLIS

TIMESTAMP/DATETIME

INT96

N/A