全部产品
Search
文档中心

DataWorks:Sumber data OSS

更新时间:Jan 09, 2026

Sumber data OSS menyediakan saluran dua arah untuk membaca dan menulis data ke OSS. Topik ini menjelaskan kemampuan sinkronisasi data dari sumber data OSS di DataWorks.

Tipe field dan batasan yang didukung

Baca offline

OSS Reader membaca data dari OSS dan mengonversinya ke protokol integrasi data. OSS adalah layanan penyimpanan untuk data tidak terstruktur. Untuk integrasi data, OSS Reader mendukung fitur-fitur berikut.

Dukungan

Tidak didukung

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

  • Mendukung file mirip CSV dengan pemisah kustom.

    Catatan

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

    Saat Anda mengompresi file, satu paket terkompresi tidak boleh berisi beberapa file.

  • Mendukung format ORC dan PARQUET.

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

  • Mendukung pembacaan rekursif dan penyaringan nama file.

  • Mendukung pembacaan konkuren untuk beberapa objek.

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

  • Tidak mendukung pembacaan konkuren multi-threaded untuk satu objek terkompresi.

Penting
  • Jika Anda menyiapkan data di OSS sebagai 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 akan terpisah secara salah. Jika file memiliki beberapa pemisah, kami menyarankan agar Anda menggunakan tipe file teks.

  • OSS adalah sumber data tidak terstruktur yang menyimpan data bertipe file. Sebelum melakukan sinkronisasi data, pastikan struktur field sesuai ekspektasi Anda. Demikian pula, jika struktur data dalam sumber data tidak terstruktur berubah, Anda harus mengonfirmasi ulang struktur field dalam konfigurasi task. Jika tidak, data dapat rusak selama sinkronisasi.

Tulis offline

OSS Writer mengonversi data dari protokol sinkronisasi data menjadi file teks di OSS. OSS adalah layanan penyimpanan untuk data tidak terstruktur. OSS Writer mendukung fitur-fitur berikut.

Dukungan

Tidak didukung

  • Hanya mendukung penulisan file teks (bukan BLOB seperti video dan citra). Skema dalam file teks harus berupa tabel dua dimensi.

  • Mendukung file mirip CSV dengan pemisah kustom.

  • Mendukung format ORC dan PARQUET.

    Catatan

    Format kompresi SNAPPY didukung di editor kode.

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

  • Mendukung pergantian file. Saat ukuran file melebihi batas tertentu, sistem beralih ke file baru.

  • Tidak mendukung penulisan konkuren ke satu file.

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

  • Tidak mendukung penulisan data jika kelas penyimpanan bucket OSS adalah Cold Archive.

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

Klasifikasi tipe

Tipe konfigurasi kolom integrasi data

Tipe integer

LONG

Tipe string

STRING

Tipe floating-point

DOUBLE

Tipe boolean

BOOLEAN

Tipe tanggal dan waktu

DATE

Tulis real-time

  • Mendukung penulisan real-time.

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

Buat sumber data

Sebelum mengembangkan task 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

Kembangkan task sinkronisasi data

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

Panduan konfigurasi task sinkronisasi offline tabel tunggal

Panduan konfigurasi task sinkronisasi real-time tabel tunggal

Untuk informasi lebih lanjut tentang proses konfigurasi, lihat Konfigurasikan task sinkronisasi real-time di Data Integration dan Konfigurasikan task sinkronisasi real-time di DataStudio.

Panduan konfigurasi sinkronisasi seluruh database

Untuk informasi lebih lanjut tentang proses konfigurasi, lihat Task sinkronisasi offline seluruh database dan Task sinkronisasi real-time seluruh database.

FAQ

Apakah ada batasan jumlah file OSS yang dapat dibaca?

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

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasikan task sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan task di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi task 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 merepresentasikan 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":"",// Melewati baris header jika file mirip CSV memiliki header.
                "encoding":"",// Format encoding.
                "fieldDelimiter":",",// Pemisah kolom.
                "fileFormat": "",// Format file teks.
                "object":[]// Awalan objek.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":""// Jumlah catatan error.
        },
        "speed":{
            "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan laju tidak dibatasi. Jika throttle diatur ke true, laju dibatasi.
            "concurrent":1, // Jumlah job konkuren.
            "mbps":"12"// Batas laju. 1 mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Demo skrip Reader: Baca file ORC atau Parquet dari OSS

Anda dapat membaca file dalam format ORC atau Parquet dari OSS dengan menggunakan kembali HDFS Reader. Selain parameter OSS Reader yang sudah ada, parameter konfigurasi tambahan seperti Path (untuk ORC) dan FileFormat (untuk ORC dan Parquet) juga digunakan.

  • 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. Nilai parameter ini harus sama dengan nama sumber data yang Anda tambahkan di editor kode.

Ya

Tidak ada

Object

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

1. Metode konfigurasi

  • Tentukan path.

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

    • Untuk menentukan satu file, masukkan path lengkapnya. Contoh: my_folder/my_file.txt.

    • Untuk menentukan beberapa objek, pisahkan path-nya dengan koma (,). Contoh: folder_a/file1.txt, folder_a/file2.txt.

  • Path dengan karakter wildcard

    • Gunakan karakter wildcard untuk mencocokkan beberapa file yang mengikuti pola tertentu.

    • *: Mencocokkan nol atau lebih karakter.

    • ?: Mencocokkan satu karakter.

    • Contoh:

      • abc*[0-9].txt cocok dengan abc0.txt, abc10,txt, abc_test_9.txt, dan lainnya.

      • abc?.txt cocok dengan abc1.txt, abcX.txt, dan lainnya.

  • Path dengan parameter dinamis

    • Sisipkan parameter penjadwalan ke dalam path untuk mengotomatiskan sinkronisasi. Saat task dijalankan, parameter akan diganti dengan nilai aktualnya.

    • Contoh: Jika Anda mengatur path ke raw_data/${bizdate}/abc.txt, task akan secara dinamis menyinkronkan folder untuk Waktu data yang sesuai setiap hari.

    • Untuk informasi lebih lanjut tentang parameter penjadwalan, lihat Sumber dan ekspresi parameter penjadwalan.

Penting
  • Gunakan karakter wildcard dengan hati-hati. Menggunakan karakter wildcard, terutama *, memicu Pemindaian pada path OSS. Jika terdapat banyak file, Pemindaian ini dapat mengonsumsi banyak memori dan waktu, bahkan dapat menyebabkan task gagal karena overflow memori. Kami menyarankan agar Anda tidak menggunakan karakter wildcard luas di lingkungan produksi. Jika mengalami masalah ini, pisahkan file ke folder berbeda dan coba sinkronisasi kembali.

  • Sistem sinkronisasi data memperlakukan semua objek dalam satu job sinkronisasi sebagai satu tabel data. Pastikan semua objek menggunakan skema yang sama.

2. Mekanisme baca konkuren dan performa

Cara Anda mengonfigurasi path menentukan konkurensi dan performa ekstraksi data:

  • Mode single-threaded: Task berjalan dalam mode single-threaded jika Anda menentukan satu file yang tidak terkompresi.

  • Mode multi-threaded: Task secara otomatis mengaktifkan pembacaan konkuren multi-threaded jika Anda menentukan beberapa file atau menggunakan karakter wildcard yang mencocokkan beberapa file. Ini secara signifikan meningkatkan efisiensi ekstraksi. Anda dapat mengonfigurasi jumlah thread konkuren di bagian Channel Control.

Ya

Tidak ada

parquetSchema

Parameter ini hanya diperlukan saat Anda membaca file Parquet dari OSS. Parameter ini hanya berlaku ketika fileFormat diatur ke parquet. Parameter ini menjelaskan tipe data dalam file Parquet. Pastikan konfigurasi dalam format JSON yang valid.

message MessageTypeName {
Required/Optional, Data type, Column name;
......................;
}

Format `parquetSchema` adalah sebagai berikut:

  • MessageTypeName: Masukkan nama.

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

  • Data type: 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.

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

Daftar field yang akan dibaca. `type` menentukan tipe data dari data sumber. `index` menentukan nomor kolom (dimulai dari 0) dalam file teks. `value` menentukan bahwa tipe saat ini adalah konstanta. Data untuk kolom ini tidak dibaca dari file sumber tetapi dihasilkan secara otomatis berdasarkan `value`.

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

"column": ["*"]

Anda juga dapat menentukan informasi field kolom. Konfigurasinya sebagai berikut.

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

Untuk informasi kolom yang Anda tentukan, `type` wajib diisi. Anda harus menentukan salah satu antara `index` atau `value`.

Ya

Semua data dibaca sebagai tipe STRING.

fileFormat

Format file dari objek sumber di OSS. Nilai yang valid adalah `csv` dan `text`. Kedua format mendukung pemisah kustom.

Ya

csv

fieldDelimiter

Pemisah kolom yang digunakan untuk membaca file.

Catatan

Saat OSS Reader membaca data, Anda harus menentukan pemisah kolom. Jika tidak ditentukan, nilai default-nya adalah koma (,). Koma juga merupakan nilai default di halaman konfigurasi.

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

Ya

,

lineDelimiter

Pemisah baris.

Catatan

Parameter ini hanya berlaku saat `fileFormat` diatur ke `text`.

Tidak

Tidak ada

compress

Format kompresi file teks. Nilai default kosong, yang berarti tidak ada kompresi. Format yang didukung adalah gzip, bzip2, dan zip.

Tidak

Tidak ada kompresi

encoding

Format encoding dari file sumber.

Tidak

utf-8

nullFormat

File teks tidak dapat menggunakan string standar untuk mendefinisikan pointer null. Gunakan `nullFormat` untuk mendefinisikan string mana yang merepresentasikan null. Misalnya:

  • Jika Anda mengonfigurasi nullFormat:"null", sinkronisasi data memperlakukan string `null` di sumber sebagai field null.

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

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

Tidak

Tidak ada

skipHeader

Melewati baris header dalam file mirip CSV. Nilai default adalah false. Parameter skipHeader tidak didukung untuk file terkompresi.

Tidak

false

csvReaderConfig

Parameter untuk membaca file CSV. Ini adalah map. CsvReader digunakan untuk membaca file CSV. Jika Anda tidak mengonfigurasi parameter ini, nilai default akan 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":"",// Mendefinisikan string yang merepresentasikan null.
                "dateFormat":"",// Format tanggal.
                "datasource":"",// Sumber data.
                "writeMode":"",// Mode penulisan.
                "writeSingleObject":"false", // Menentukan apakah data yang disinkronkan ditulis ke satu file OSS.
                "encoding":"",// Format encoding.
                "fieldDelimiter":",",// Pemisah kolom.
                "fileFormat":"",// Format file teks.
                "object":""// Awalan objek.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
            "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan laju tidak dibatasi. Jika throttle diatur ke true, laju dibatasi.
            "concurrent":1, // Jumlah job konkuren.
            "mbps":"12"// Batas laju. 1 mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Demo skrip Writer: Tulis file ORC atau Parquet ke OSS

Anda dapat menulis file ORC atau Parquet ke OSS dengan menggunakan kembali HDFS Writer. Selain parameter OSS Writer yang sudah ada, Anda dapat menggunakan parameter tambahan seperti Path dan FileFormat. Untuk informasi lebih lanjut tentang parameter ini, lihat HDFS Writer.

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

Penting

Kode berikut hanya sebagai referensi. Sesuaikan parameter sesuai dengan nama kolom dan tipe data Anda. Jangan menyalin kode secara langsung.

  • Tulis file ORC ke OSS

    Untuk menulis file ORC, Anda harus menggunakan editor kode. Atur fileFormat ke orc, atur path ke path file yang akan ditulis, dan konfigurasikan column dalam format {"name": "nama kolom Anda", "type": "tipe kolom Anda"}.

    Tipe ORC berikut didukung untuk penulisan:

    Tipe bidang

    Tulis offline ke OSS (format ORC)

    TINYINT

    Dukungan

    SMALLINT

    Dukungan

    INT

    Dukungan

    BIGINT

    Dukungan

    FLOAT

    Didukung

    DOUBLE

    Didukung

    TIMESTAMP

    Didukung

    DATE

    Didukung

    VARCHAR

    Dukungan

    STRING

    Dukungan

    CHAR

    Dukungan

    BOOLEAN

    Dukungan

    DECIMAL

    Dukungan

    BINARY

    Dukungan

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

Nilai default

datasource

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

Ya

Tidak ada

object

Nama file yang akan ditulis ke OSS. OSS menggunakan nama file untuk mensimulasikan struktur direktori. OSS memiliki batasan berikut pada nama objek:

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

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

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

Ya

Tidak ada

ossBlockSize

Ukuran setiap blok data dalam MB. Nilai default adalah 16. Parameter ini hanya didukung saat `fileFormat` adalah parquet atau ORC. Anda dapat mengonfigurasi parameter ini pada level yang sama dengan parameter object.

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

Tidak

16

writeMode

Menentukan cara menangani data yang sudah ada sebelum menulis:

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

  • append: Tidak ada pemrosesan sebelum menulis. OSS Writer langsung menulis data menggunakan nama objek dan menambahkan UUID acak untuk memastikan nama file tidak bentrok. Misalnya, jika Anda menentukan nama objek sebagai `DataIntegration`, nama yang ditulis sebenarnya adalah DI_****_****_****.

  • nonConflict: Jika objek dengan awalan yang cocok sudah ada di path yang ditentukan, akan muncul error. Misalnya, jika Anda mengatur "object":"abc" dan objek bernama `abc123` sudah ada, akan muncul error.

Ya

Tidak ada

writeSingleObject

Menentukan apakah data ditulis ke satu file:

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

  • false: Menulis data ke beberapa file. Jika tidak ada data yang dibaca dan header file dikonfigurasi, file kosong yang hanya berisi header akan dibuat. Jika tidak, hanya file kosong yang dibuat.

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

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

Tidak

false

fileFormat

Format file objek. Format berikut didukung:

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

  • text: Hanya memisahkan data yang akan ditulis menggunakan pemisah kolom. Tidak ada escaping jika data mencakup pemisah kolom.

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

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

Tidak

text

compress

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

Penting

Tipe file CSV dan TEXT tidak mendukung kompresi. File Parquet dan ORC hanya mendukung kompresi SNAPPY.

Tidak

Tidak ada

fieldDelimiter

Pemisah kolom.

Tidak

,

encoding

Konfigurasikan encoding file.

Tidak

utf-8

parquetSchema

Parameter ini diperlukan saat Anda menulis data ke file Parquet di OSS. Parameter ini menjelaskan struktur file objek. Parameter ini hanya berlaku saat fileFormat diatur ke parquet. Formatnya sebagai berikut.

message MessageTypeName {
Required/Optional, Data type, Column name;
......................;
}

Item konfigurasi adalah sebagai berikut:

  • MessageTypeName: Masukkan nama.

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

  • Data type: 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.

Berikut adalah contohnya.

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

File teks tidak dapat menggunakan string standar untuk mendefinisikan pointer null. Gunakan nullFormat untuk mendefinisikan string yang merepresentasikan null. Misalnya, jika Anda mengatur nullFormat="null" dan data sumber adalah null, data tersebut diperlakukan sebagai field null.

Tidak

Tidak ada

header

Header file objek. Contoh: ["id", "name", "age"].

Tidak

Tidak ada

maxFileSize (Konfigurasi lanjutan. Parameter ini tidak didukung di Antarmuka tanpa kode.)

Ukuran maksimum satu file objek dalam MB. Nilai default adalah 10.000 × 10 MB. Ini mirip dengan mengontrol ukuran file log di log4j. Saat menggunakan unggah multi-bagian di OSS, setiap blok berukuran 10 MB (yang juga merupakan granularitas minimum untuk rotasi file log, artinya `maxFileSize` kurang dari 10 MB dianggap sebagai 10 MB). Setiap OSS InitiateMultipartUploadRequest mendukung maksimal 10.000 blok.

Saat rotasi terjadi, nama objek dibentuk dengan menambahkan akhiran seperti _1, _2, _3 ke awalan objek asli dengan UUID acak.

Catatan
  • Unit default adalah MB.

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

  • maxFileSize hanya berlaku untuk format `csv` dan `text`. Parameter ini dihitung pada level memori proses task sinkronisasi dan tidak dapat mengontrol secara tepat ukuran file tujuan yang sebenarnya. Ukuran file aktual di tujuan mungkin melebihi ukuran yang diharapkan karena pembengkakan data.

Tidak

100.000

suffix (Konfigurasi lanjutan. Parameter ini tidak didukung di Antarmuka tanpa kode.)

Akhiran nama file yang dihasilkan. Misalnya, jika Anda mengatur suffix ke .csv, nama file akhir akan menjadi fileName****.csv.

Tidak

Tidak ada

Lampiran: Kebijakan konversi tipe data Parquet

Jika Anda tidak mengonfigurasi parameter `parquetSchema`, DataWorks mengonversi tipe data field sumber berdasarkan kebijakan berikut.

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