全部产品
Search
文档中心

DataWorks:Sumber data OSS

更新时间:Nov 18, 2025

Sumber data OSS menyediakan saluran dua arah untuk membaca dan menulis data ke OSS. Topik ini menjelaskan cara DataWorks melakukan sinkronisasi data dengan sumber data OSS.

Tipe field dan batasan yang didukung

Baca offline

OSS Reader membaca data dari OSS, layanan penyimpanan data tidak terstruktur, lalu mengonversinya ke protokol Data Integration. OSS Reader mendukung fitur-fitur berikut.

Didukung

Tidak didukung

  • Membaca file TXT. Skema dalam file TXT harus berupa tabel dua dimensi.

  • Membaca file mirip CSV dengan pemisah kustom.

  • Membaca format ORC dan PARQUET.

  • Membaca berbagai tipe data yang direpresentasikan sebagai string. Mendukung pemangkasan kolom dan konstanta kolom.

  • Mendukung pembacaan rekursif dan penyaringan nama file.

  • Mendukung kompresi teks. Format kompresi yang tersedia adalah gzip, bzip2, dan zip.

    Catatan

    Paket terkompresi tidak boleh berisi beberapa file.

  • Mendukung pembacaan konkuren untuk beberapa objek.

  • Tidak mendukung pembacaan konkuren multi-thread untuk satu objek (file) tunggal.

  • Satu objek terkompresi tidak dapat dibaca oleh beberapa thread secara konkuren karena keterbatasan teknis.

Penting
  • Saat menyiapkan data di OSS, jika datanya berada dalam file CSV, file tersebut harus dalam format CSV standar. Misalnya, jika suatu kolom berisi tanda kutip ganda ("), Anda harus menggantinya dengan dua tanda kutip ganda (""). Jika tidak, file mungkin terpisah secara salah. Jika file berisi beberapa pemisah, gunakan tipe file teks.

  • OSS merupakan sumber data tidak terstruktur. Sebelum melakukan sinkronisasi data, pastikan struktur field sesuai harapan. Demikian pula, jika struktur data di sumber berubah, Anda harus memperbarui struktur field dalam konfigurasi tugas. Jika tidak, data mungkin menjadi rusak selama sinkronisasi.

Tulis offline

OSS Writer mengonversi data dari protokol sinkronisasi data menjadi file teks dan menuliskannya ke OSS, layanan penyimpanan data tidak terstruktur. OSS Writer mendukung fitur-fitur berikut.

Didukung

Tidak didukung

  • Hanya menulis file teks. File BLOB seperti video dan citra tidak didukung. Skema dalam file teks harus berupa tabel dua dimensi.

  • Menulis file mirip CSV dengan pemisah kustom.

  • Menulis format ORC dan PARQUET.

  • Mendukung penulisan multi-threaded. Setiap thread menulis ke sub-file yang berbeda.

  • Mendukung rotasi file. File baru dibuat ketika ukuran file saat ini melebihi batas tertentu.

  • Tidak mendukung penulisan konkuren ke satu file tunggal.

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

  • Penulisan ke bucket OSS yang menggunakan kelas penyimpanan Cold Archive tidak didukung.

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

Kategori tipe

Tipe konfigurasi kolom Data Integration

Integer

LONG

String

STRING

Floating-point

DOUBLE

Boolean

BOOLEAN

Tanggal dan waktu

DATE

Tulis real-time

  • Penulisan real-time didukung.

  • Penulisan real-time dari satu tabel ke data lake, seperti Hudi (0.12.x), Paimon, dan Iceberg, didukung.

Buat 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 infotips parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Catatan

Kembangkan tugas sinkronisasi data

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

Konfigurasi tugas sinkronisasi offline untuk satu tabel

Konfigurasi tugas sinkronisasi real-time untuk satu tabel

Untuk informasi lebih lanjut, lihat Konfigurasi tugas sinkronisasi real-time di Data Integration dan Konfigurasi tugas sinkronisasi real-time di DataStudio.

Konfigurasi tugas sinkronisasi basis data penuh

Untuk informasi lebih lanjut, lihat Tugas sinkronisasi offline basis data penuh dan Tugas sinkronisasi real-time basis data penuh.

FAQ

Apakah ada batasan jumlah file OSS yang dapat dibaca?

Bagaimana cara menangani data kotor saat membaca file CSV yang memiliki beberapa pemisah?

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasi tugas sinkronisasi batch menggunakan editor kode

Jika 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 Konfigurasi tugas di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Demo skrip Reader: Contoh umum

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"oss",// Nama plugin.
            "parameter":{
                "nullFormat":"",// Mendefinisikan string yang dapat diinterpretasikan sebagai null.
                "compress":"",// Jenis kompresi teks.
                "datasource":"",// Sumber data.
                "column":[// Field.
                    {
                        "index":0,// Indeks kolom.
                        "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.
                        "index":4,
                        "type":"date"
                    }
                ],
                "skipHeader":"",// Menentukan apakah akan melewati header dalam file mirip CSV.
                "encoding":"",// Format encoding.
                "fieldDelimiter":",",// Pemisah kolom.
                "fileFormat": "",// Jenis teks.
                "object":[]// Awalan objek.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":""// Jumlah catatan data kotor yang diizinkan.
        },
        "speed":{
            "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Batasan laju. 1 Mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Demo skrip Reader: Membaca file ORC atau Parquet dari OSS

Untuk membaca file dalam format ORC atau Parquet dari OSS, DataWorks menggunakan kembali HDFS Reader. Selain parameter OSS Reader yang sudah ada, parameter konfigurasi tambahan seperti Path (ORC) dan FileFormat (ORC, Parquet) juga didukung.

  • Contoh berikut menunjukkan cara membaca file 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 berikut menunjukkan cara membaca file 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

Nilai default

datasource

Nama sumber data. Anda dapat menambahkan sumber data di editor kode. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

Object

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

1. Metode konfigurasi

  • Jalur eksplisit

    • Aturan dasar: Jalur dimulai dari Direktori root bucket dan tidak perlu mencantumkan nama bucket.

    • Untuk menentukan satu file, masukkan jalur lengkap file tersebut. Contoh: my_folder/my_file.txt.

    • Menentukan beberapa objek: Gunakan koma (,) untuk memisahkan beberapa jalur file atau folder. Contoh: folder_a/file1.txt, folder_a/file2.txt.

  • Jalur wildcard

    • Anda dapat menggunakan karakter wildcard untuk mencocokkan beberapa file yang mengikuti pola tertentu.

    • *: Mencocokkan nol atau lebih karakter.

    • ?: Mencocokkan satu karakter.

    • Contoh:

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

      • abc?.txt mencocokkan abc1.txt, abcX.txt, dan sebagainya.

  • Jalur parameter dinamis

    • Anda dapat menyematkan parameter penjadwalan dalam jalur untuk mengotomatiskan sinkronisasi. Saat tugas dijalankan, parameter diganti dengan nilai aktualnya.

    • Contoh: Jika Anda mengatur jalur menjadi raw_data/${bizdate}/abc.txt, tugas dapat secara dinamis menyinkronkan folder untuk waktu data yang sesuai setiap hari.

    • Untuk informasi lebih lanjut tentang cara menggunakan parameter penjadwalan, lihat Format yang didukung untuk parameter penjadwalan.

Penting
  • Gunakan karakter wildcard dengan hati-hati. Menggunakan karakter wildcard, terutama *, memicu pemindaian traversal pada jalur OSS. Jika jumlah file besar, operasi ini mengonsumsi banyak memori dan waktu, bahkan dapat menyebabkan tugas gagal karena overflow memori. Kami tidak merekomendasikan penggunaan karakter wildcard luas di lingkungan produksi. Jika masalah ini terjadi, pisahkan file ke folder berbeda dan coba lagi.

  • Layanan sinkronisasi data memperlakukan semua objek yang disinkronkan dalam satu pekerjaan sebagai satu tabel data. Anda harus memastikan bahwa semua objek dapat menyesuaikan dengan skema yang sama.

2. Mekanisme baca konkuren dan kinerja

Metode konfigurasi secara langsung memengaruhi kinerja konkuren ekstraksi data:

  • Mode single-threaded: Saat Anda hanya menentukan satu file eksplisit yang tidak terkompresi, tugas mengekstraksi data dalam mode single-threaded.

  • Mode multi-threaded: Saat Anda menentukan beberapa file eksplisit, atau mencocokkan beberapa file dengan karakter wildcard, tugas secara otomatis mengaktifkan pembacaan konkuren multi-threaded untuk meningkatkan efisiensi ekstraksi secara signifikan. Anda dapat mengonfigurasi jumlah thread konkuren di bagian Channel Control.

Ya

Tidak ada

parquetSchema

Parameter ini dikonfigurasi saat Anda membaca file Parquet dari OSS. Parameter ini hanya berlaku ketika fileFormat diatur ke parquet. Parameter ini menentukan tipe data yang disimpan dalam file Parquet. Anda harus memastikan bahwa konfigurasi keseluruhan sesuai dengan sintaks JSON setelah menentukan parameter ini.

message MessageTypeName {
Required/Optional, Tipe data, Nama kolom;
......................;
}

Daftar berikut menjelaskan format parameter parquetSchema:

  • MessageTypeName: Masukkan nama.

  • Required/Optional: `required` menunjukkan bahwa field tidak boleh null. `optional` menunjukkan bahwa field boleh null. Kami merekomendasikan agar Anda mengatur ini ke `optional` untuk semua field.

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

  • Setiap pengaturan baris harus diakhiri dengan titik koma, termasuk baris terakhir.

Contoh berikut menunjukkan cara mengonfigurasi parameter ini.

"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

Daftar field yang akan dibaca. `type` menentukan tipe data dari data sumber. `index` menentukan kolom dari mana data dibaca. Nilai `index` dimulai dari 0. `value` menentukan bahwa kolom saat ini adalah konstanta. Data tidak dibaca dari file sumber tetapi dihasilkan secara otomatis berdasarkan nilai parameter ini.

Secara default, Anda dapat membaca semua data sebagai tipe STRING. Konfigurasinya sebagai berikut.

"column": ["*"]

Anda dapat menentukan informasi field kolom. Konfigurasinya sebagai berikut.

"column":
    {
       "type": "long",
       "index": 0    // Membaca field integer dari kolom pertama file teks OSS.
    },
    {
       "type": "string",
       "value": "alibaba"  // Menghasilkan field string dengan nilai "alibaba" dari dalam OSS Reader sebagai field saat ini.
    }
Catatan

Saat menentukan informasi kolom, Anda harus menentukan parameter `type`. Anda harus menentukan salah satu parameter `index` atau `value`.

Ya

Semua data dibaca sebagai tipe STRING.

fileFormat

Format file sumber di OSS. Nilai yang valid: csv dan text. Kedua format mendukung pemisah kustom.

Ya

csv

fieldDelimiter

Pemisah yang memisahkan kolom dalam file sumber.

Catatan

Saat OSS Reader membaca data, Anda harus menentukan pemisah kolom. Jika tidak menentukannya, koma (,) digunakan secara default. Koma (,) juga merupakan nilai default di UI.

Jika pemisah bukan karakter yang terlihat, masukkan representasi Unicode-nya. Misalnya, \u001b atau \u007c.

Ya

,

lineDelimiter

Pemisah yang memisahkan baris dalam file sumber.

Catatan

Parameter ini hanya berlaku ketika fileFormat diatur ke text.

Tidak

Tidak ada

compress

Format kompresi file teks. Nilai default kosong, yang menunjukkan bahwa file tidak dikompresi. Nilai yang valid: gzip, bzip2, dan zip.

Tidak

Tidak dikompresi

encoding

Format encoding file sumber.

Tidak

utf-8

nullFormat

Dalam file teks, Anda tidak dapat menggunakan string standar untuk mendefinisikan pointer null. Data Integration menyediakan parameter nullFormat untuk mendefinisikan string mana yang dapat diinterpretasikan sebagai null. Contoh:

  • Jika Anda mengatur nullFormat:"null", yang merupakan karakter terlihat, dan data sumber adalah string "null", Data Integration menginterpretasikannya sebagai field null.

  • Jika Anda mengatur nullFormat:"\u0001", yang merupakan karakter tak terlihat, dan data sumber adalah string "\u0001", Data Integration menginterpretasikannya sebagai field null.

  • Jika Anda tidak menentukan parameter "nullFormat", data sumber ditulis ke tujuan apa adanya, tanpa konversi apa pun.

Tidak

Tidak ada

skipHeader

Menentukan apakah akan melewati header dalam file mirip CSV. Nilai default adalah false. Parameter skipHeader tidak didukung untuk file terkompresi.

Tidak

false

csvReaderConfig

Parameter untuk membaca file CSV. Parameter ini bertipe Map. CsvReader digunakan untuk membaca file CSV. Anda dapat mengonfigurasi beberapa parameter. Jika tidak mengonfigurasi parameter ini, nilai default digunakan.

Tidak

Tidak ada

Demo skrip Writer: Contoh umum

{
    "type":"job",
    "version":"2.0",
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"oss",// Nama plugin.
            "parameter":{
                "nullFormat":"",// Data Integration menyediakan parameter nullFormat untuk mendefinisikan string mana yang dapat diinterpretasikan sebagai null.
                "dateFormat":"",// Format tanggal.
                "datasource":"",// Sumber data.
                "writeMode":"",// Mode penulisan.
                "writeSingleObject":"false", // Menentukan apakah akan menulis data yang disinkronkan ke satu file OSS.
                "encoding":"",// Format encoding.
                "fieldDelimiter":",",// Pemisah kolom.
                "fileFormat":"",// Jenis teks.
                "object":""// Awalan objek.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan data kotor yang diizinkan.
        },
        "speed":{
            "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Batasan laju. 1 Mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Demo skrip Writer: Konfigurasi skrip untuk menulis file ORC atau Parquet ke OSS

DataWorks menggunakan kembali HDFS Writer untuk menulis file ORC atau Parquet ke OSS. Selain parameter OSS Writer yang sudah ada, parameter tambahan seperti Path dan FileFormat juga didukung. Untuk informasi lebih lanjut tentang parameter tersebut, lihat HDFS Writer.

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

Penting

Kode berikut hanya contoh. Anda harus memodifikasi parameter berdasarkan nama dan tipe kolom Anda. Jangan menyalin kode secara langsung.

  • Menulis data ke OSS dalam format ORC

    Anda hanya dapat menulis file ORC di editor kode. Atur fileFormat ke orc, atur path ke jalur file tujuan, dan konfigurasi column dalam format {"name":"nama kolom Anda","type": "tipe kolom Anda"}.

    Tipe data ORC berikut didukung untuk operasi tulis:

    Jenis bidang

    Tulis offline ke OSS (format ORC)

    TINYINT

    Didukung

    SMALLINT

    Didukung

    INT

    Didukung

    BIGINT

    Didukung

    FLOAT

    Didukung

    DOUBLE

    Dukungan

    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"
    }
    ],
    "writeMode": "append",
    "fieldDelimiter": "\t",
    "compress": "NONE",
    "encoding": "UTF-8"
    }
    }
  • Menulis data ke OSS dalam format Parquet

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

Nilai default

datasource

Nama sumber data. Anda dapat menambahkan sumber data di editor kode. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

object

Nama file yang akan ditulis oleh OSS Writer. OSS menggunakan nama file untuk mensimulasikan folder. OSS memiliki batasan berikut pada nama objek:

  • Jika Anda mengatur "object": "datax", nama objek yang ditulis dimulai dengan `datax` dan diikuti oleh string acak.

  • Jika Anda mengatur "object": "cdo/datax", nama objek yang ditulis dimulai dengan /cdo/datax dan diikuti oleh string acak. Garis miring (/) digunakan sebagai pemisah untuk mensimulasikan folder di OSS.

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

Ya

Tidak ada

ossBlockSize

Ukuran bagian OSS. Ukuran default adalah 16 MB. Parameter ini hanya didukung saat file ditulis dalam format parquet atau ORC. Anda dapat menambahkan parameter ini pada level yang sama dengan parameter object.

Karena unggah multi-bagian OSS mendukung maksimal 10.000 bagian, ukuran default satu file dibatasi hingga 160 GB. Jika jumlah bagian melebihi batas, Anda dapat meningkatkan ukuran bagian untuk mendukung unggahan file yang lebih besar.

Tidak

16

writeMode

Metode pemrosesan data yang digunakan OSS Writer sebelum menulis data:

  • truncate: Menghapus semua objek yang cocok dengan awalan nama objek yang ditentukan sebelum menulis data. Misalnya, jika Anda mengatur "object":"abc", semua objek yang namanya dimulai dengan `abc` dihapus.

  • append: Tidak melakukan pemrosesan sebelum menulis data. OSS Writer langsung menulis data ke objek dengan nama yang ditentukan. UUID acak digunakan sebagai sufiks untuk memastikan nama file tidak bentrok. Misalnya, jika Anda menentukan nama objek sebagai `DI`, nama objek sebenarnya adalah DI_****_****_****.

  • nonConflict: Melaporkan kesalahan jika objek yang cocok dengan awalan sudah ada di jalur yang ditentukan. Misalnya, jika Anda mengatur "object":"abc" dan objek bernama `abc123` sudah ada, kesalahan dilaporkan.

Ya

Tidak ada

writeSingleObject

Menentukan apakah akan menulis data ke satu file di OSS:

  • true: Menulis data ke satu file. Saat tidak ada data yang dapat dibaca, file kosong tidak dihasilkan.

  • false: Menulis data ke beberapa file. Saat tidak ada data yang dapat dibaca, jika header file dikonfigurasi, file kosong yang hanya berisi header file dihasilkan. Jika tidak, hanya file kosong yang dihasilkan.

Catatan
  • Saat menulis data dalam format ORC atau Parquet, parameter writeSingleObject tidak berlaku. Artinya, Anda tidak dapat menggunakan parameter ini untuk menulis data ke satu file ORC atau Parquet dalam skenario multi-konkuren. Untuk menulis data ke satu file, Anda dapat mengatur jumlah thread konkuren menjadi 1. Namun, sufiks acak ditambahkan ke nama file, dan mengatur konkurensi ke 1 memengaruhi kecepatan tugas sinkronisasi.

  • Dalam beberapa skenario, seperti saat sumbernya adalah Hologres, data dibaca berdasarkan shard. Bahkan dengan satu thread konkuren, beberapa file mungkin tetap dihasilkan.

Tidak

false

fileFormat

Format file yang akan ditulis. Format berikut didukung:

  • csv: Hanya format csv ketat yang didukung. Jika data yang akan ditulis mencakup pemisah kolom, data tersebut di-escape sesuai sintaks escape csv. Karakter escape adalah tanda kutip ganda (").

  • text: Data yang akan ditulis hanya dipisahkan oleh pemisah kolom. Jika data yang akan ditulis mencakup pemisah kolom, data tersebut tidak di-escape.

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

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

Tidak

text

compress

Format kompresi file data yang akan ditulis ke OSS. Parameter ini harus dikonfigurasi di editor kode.

Catatan

Kompresi tidak didukung untuk tipe file csv dan text. File Parquet dan ORC mendukung format kompresi seperti gzip dan snappy.

Tidak

Tidak ada

fieldDelimiter

Pemisah yang memisahkan kolom dalam file tujuan.

Tidak

,

encoding

Format encoding file tujuan.

Tidak

utf-8

parquetSchema

Parameter ini wajib saat Anda menulis data ke OSS dalam format Parquet. Parameter ini digunakan untuk menggambarkan struktur file tujuan. Parameter ini hanya berlaku ketika fileFormat diatur ke parquet. Formatnya sebagai berikut.

message MessageTypeName {
Required/Optional, Tipe data, Nama kolom;
......................;
}

Daftar berikut menjelaskan item konfigurasi:

  • MessageTypeName: Masukkan nama.

  • Required/Optional: `required` menunjukkan bahwa field tidak boleh null. `optional` menunjukkan bahwa field boleh null. Kami merekomendasikan agar Anda mengatur ini ke `optional` untuk semua field.

  • Tipe data: File Parquet mendukung tipe BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE, BINARY (gunakan BINARY untuk tipe string), dan FIXED_LEN_BYTE_ARRAY.

Catatan

Setiap pengaturan baris harus diakhiri dengan titik koma, termasuk baris terakhir.

Pertimbangkan contoh berikut.

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

Anda tidak dapat menggunakan string standar untuk mendefinisikan null (pointer null) dalam file teks. Sistem sinkronisasi data menyediakan parameter nullFormat untuk mendefinisikan 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

Header file yang ditulis ke OSS. Contoh: ["id", "name", "age"].

Tidak

Tidak ada

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

Ukuran maksimum satu file objek yang ditulis ke OSS. Nilai default adalah 10.000 × 10 MB. Ini mirip dengan mengontrol ukuran file log saat Anda mencetak log log4j. Saat OSS melakukan unggah multi-bagian, ukuran setiap bagian adalah 10 MB. Ini juga merupakan granularitas minimum untuk rotasi file log. Nilai maxFileSize kurang dari 10 MB dianggap sebagai 10 MB. Setiap OSS InitiateMultipartUploadRequest mendukung maksimal 10.000 bagian.

Saat rotasi terjadi, nama objek dibentuk dengan menambahkan UUID dan sufiks seperti _1, _2, atau _3 ke awalan objek asli.

Catatan
  • Unit default adalah MB.

  • Contoh konfigurasi: "maxFileSize":300. Ini mengatur ukuran satu file menjadi 300 MB.

  • maxFileSize hanya berlaku untuk format csv dan text. Ukuran file dihitung berdasarkan memori proses tugas sinkronisasi, sehingga ukuran sebenarnya file tujuan tidak dapat dikontrol secara tepat. Ukuran file sebenarnya di tujuan mungkin melebihi ukuran yang diharapkan karena pembengkakan data.

Tidak

100.000

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

Sufiks nama file yang dihasilkan saat data ditulis. Misalnya, jika Anda mengatur suffix ke .csv, nama file akhir adalah fileName****.csv.

Tidak

Tidak ada

Lampiran: Kebijakan konversi untuk tipe data Parquet

Jika Anda tidak mengonfigurasi parameter parquetSchema, DataWorks mengonversi tipe data field sumber berdasarkan kebijakan yang telah ditentukan. Tabel berikut menjelaskan kebijakan konversi ini.

Tipe data yang dikonversi

Tipe Parquet

Tipe logis Parquet

CHAR / VARCHAR / STRING

BINARY

UTF8

BOOLEAN

BOOLEAN

Tidak berlaku

BINARY / VARBINARY

BINARY

Tidak berlaku

DECIMAL

FIXED_LEN_BYTE_ARRAY

DECIMAL

TINYINT

INT32

INT_8

SMALLINT

INT32

INT_16

INT/INTEGER

INT32

Tidak berlaku

BIGINT

INT64

Tidak berlaku

FLOAT

FLOAT

Tidak berlaku

DOUBLE

DOUBLE

Tidak berlaku

DATE

INT32

DATE

TIME

INT32

TIME_MILLIS

TIMESTAMP/DATETIME

INT96

Tidak berlaku