All Products
Search
Document Center

DataWorks:OSS-HDFS

Last Updated:Mar 01, 2026

OSS-HDFS Service (JindoFS Service) adalah produk penyimpanan data lake cloud-native. Sumber data OSS-HDFS menyediakan saluran dua arah untuk membaca dari dan menulis ke OSS-HDFS. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan oleh DataWorks untuk OSS-HDFS.

Batasan

Baca offline

  • Saat menggunakan OSS-HDFS Reader, perhatikan hal berikut:

    Koneksi jaringan dari kelompok sumber daya ke OSS-HDFS bisa kompleks. Untuk menjalankan tugas sinkronisasi data, gunakan Serverless resource group (direkomendasikan) atau exclusive resource group for Data Integration. Pastikan kelompok sumber daya Anda dapat mengakses OSS-HDFS melalui jaringan.

  • OSS-HDFS Reader mendukung fitur-fitur berikut:

    • Mendukung file dalam format text, csv, orc, dan parquet. Konten file harus berupa tabel dua dimensi logis.

    • Mendukung pembacaan berbagai tipe data dan konstanta kolom.

    • Mendukung pembacaan rekursif serta karakter wildcard * dan ?.

    • Mendukung pembacaan konkuren dari beberapa file.

Penting

OSS-HDFS Reader tidak mendukung pembacaan konkuren multi-threaded dari satu file tunggal. Hal ini disebabkan oleh algoritma chunking internal untuk satu file.

Tulis offline

Saat menggunakan OSS-HDFS Writer, perhatikan hal berikut:

  • OSS-HDFS Writer hanya mendukung file dalam format text, orc, dan parquet. Konten file harus berupa tabel dua dimensi logis.

  • Untuk file teks, pastikan pemisah yang digunakan saat menulis ke file OSS-HDFS sama dengan pemisah yang digunakan saat membuat tabel di Hive. Hal ini memastikan bahwa data yang ditulis ke OSS-HDFS terkait dengan benar ke bidang-bidang dalam tabel Hive.

Real-time write

  • Mendukung penulisan real-time.

  • Mendukung penulisan real-time untuk format Hudi versi 0.14.x.

Proses implementasi

Proses implementasi OSS-HDFS Writer adalah sebagai berikut:

  1. Folder temporary dibuat dalam sistem file OSS-HDFS berdasarkan path yang ditentukan.

    Nama folder tersebut mengikuti aturan path_random.

  2. Anda dapat menulis file yang dibaca ke folder temporary ini.

  3. Setelah semua data ditulis, file-file tersebut dipindahkan dari folder temporary ke folder tujuan yang ditentukan. Sistem memastikan bahwa nama file bersifat unik.

  4. Folder temporary dihapus. Jika koneksi ke OSS-HDFS terputus, Anda harus menghapus secara manual folder temporary beserta file-file yang telah ditulis.

Tipe bidang yang didukung

Baca offline

Tipe data dalam ParquetFile, ORCFile, TextFile, dan CsvFile dikonversi ke tipe data internal yang didukung Data Integration, seperti ditunjukkan pada tabel berikut.

Kategori tipe

Tipe data OSS-HDFS

Integer

TINYINT, SMALLINT, INT, BIGINT

Floating-point

FLOAT, DOUBLE, DECIMAL

String

STRING, CHAR, VARCHAR

Date and time

DATE, TIMESTAMP

Boolean

BOOLEAN

Catatan
  • LONG: Data integer dalam file OSS-HDFS, seperti 123456789.

  • DOUBLE: Data floating-point dalam file OSS-HDFS, seperti 3.1415.

  • BOOLEAN: Data boolean dalam file OSS-HDFS, seperti true atau false. Nilai-nilai ini tidak case-sensitive.

  • DATE: Data tanggal dan waktu dalam file OSS-HDFS, seperti 2014-12-31 00:00:00.

Tulis offline

OSS-HDFS Writer menulis file dalam format TextFile, ORCFile, dan ParquetFile ke path yang ditentukan dalam sistem file OSS-HDFS.

Tipe data yang didukung ditampilkan pada tabel berikut.

Kategori tipe

Tipe data OSS-HDFS

Integer

TINYINT, SMALLINT, INT, dan BIGINT

Floating-point

FLOAT dan DOUBLE

String

CHAR, VARCHAR, dan STRING

Boolean

BOOLEAN

Date and time

DATE dan TIMESTAMP

Tambahkan sumber data

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

Kembangkan tugas sinkronisasi data

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

Konfigurasikan tugas sinkronisasi offline untuk satu tabel

Konfigurasikan tugas sinkronisasi real-time untuk satu tabel

Untuk informasi lebih lanjut, lihat Configure real-time incremental synchronization for a single table dan Configure a real-time synchronization task in DataStudio.

Konfigurasikan tugas sinkronisasi real-time penuh dan inkremental untuk seluruh database

Untuk informasi selengkapnya, lihat Mengonfigurasi Tugas Sinkronisasi Real-Time untuk Seluruh Database.

Lampiran: Contoh skrip dan deskripsi parameter OSS-HDFS

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengatur parameter terkait dalam skrip sesuai persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengatur tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oss_hdfs",// Plugin name
            "parameter": {
                "path": "",// The path of the file to read.
                "datasource": "",// Data source
                "column": [
                    {
                        "index": 0,// The serial number. The index starts from 0. This indicates that data is read from the first column of the local text file.
                        "type": "string"// Field type
                    },
                    {
                        "index": 1,
                        "type": "long"
                    },
                    {
                        "index": 2,
                        "type": "double"
                    },
                    {
                        "index": 3,
                        "type": "boolean"
                    },
                    {
                        "format": "yyyy-MM-dd HH:mm:ss", // Date format
                        "index": 4,
                        "type": "date"
                    }
                ],
                "fieldDelimiter": ",",// Column delimiter
                "encoding": "UTF-8",// Encoding format
                "fileFormat": ""// Text type
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// Number of error records
        },
        "speed": {
            "concurrent": 3,// Job concurrency
            "throttle": true, // If throttle is set to false, the mbps parameter does not take effect, and no rate limiting is applied. If throttle is set to true, rate limiting is applied.
            "mbps":"12"// Rate limit. 1 mbps = 1 MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

path

Path file yang akan dibaca.

  • Jika Anda menentukan satu file OSS-HDFS, OSS-HDFS Reader hanya dapat menggunakan satu thread untuk mengekstraksi data.

  • Jika Anda menentukan beberapa file OSS-HDFS, OSS-HDFS Reader dapat menggunakan beberapa thread untuk mengekstraksi data. Jumlah thread konkuren ditentukan oleh parameter `concurrent`. Untuk membaca beberapa file, Anda dapat menggunakan ekspresi reguler sederhana untuk pencocokan, seperti /hadoop/data_201704*. Jika file dinamai berdasarkan waktu dengan pola reguler, Anda dapat menggunakan parameter penjadwalan. Parameter penjadwalan diganti secara dinamis berdasarkan Waktu bisnis. Untuk informasi lebih lanjut, lihat Supported formats for scheduling parameters.

    Catatan

    Jumlah aktual thread konkuren adalah nilai yang lebih kecil antara jumlah file OSS-HDFS yang akan dibaca dan nilai yang Anda tetapkan untuk konkurensi job.

  • Jika Anda menentukan karakter wildcard, OSS-HDFS Reader melakukan traversal dan mengidentifikasi beberapa file. Misalnya, menentukan / membaca semua file di Direktori root, dan menentukan /oss-hdfs/ membaca semua file di direktori oss-hdfs downstream. OSS-HDFS Reader hanya mendukung * dan ? sebagai karakter wildcard file. Sintaksnya mirip dengan karakter wildcard file di command line Linux umum.

Penting
  • Data Integration memperlakukan semua file yang akan dibaca dalam job sinkronisasi sebagai satu tabel data. Anda harus memastikan bahwa semua file dapat disesuaikan dengan skema yang sama.

  • Pasangan Kunci Akses yang Anda berikan saat mengonfigurasi sumber data OSS-HDFS harus memiliki izin untuk membaca dari OSS-HDFS yang sesuai.

Ya

Tidak ada

fileFormat

Tipe file. Anda hanya dapat mengatur parameter ini ke text, orc, atau parquet.

OSS-HDFS Reader dapat secara otomatis mendeteksi tipe file dan menggunakan kebijakan baca yang sesuai. Sebelum sinkronisasi data, OSS-HDFS Reader memeriksa apakah format semua file yang akan disinkronkan di path yang ditentukan sama dengan nilai fileFormat. Jika format berbeda, tugas gagal.

Daftar berikut menjelaskan nilai valid untuk fileFormat:

  • text: menunjukkan format file TEXT.

  • orc: menunjukkan format file ORC.

  • csv: menunjukkan format file OSS-HDFS normal (tabel dua dimensi logis).

  • parquet: menunjukkan format file Parquet normal.

Ya

Tidak ada

column

Daftar bidang yang akan dibaca. Secara default, Anda dapat membaca semua data sebagai tipe STRING dengan mengatur parameter menjadi "column": ["*"].

Anda juga dapat menentukan informasi bidang kolom sebagai berikut. Parameter dijelaskan sebagai berikut:

  • type: Menentukan tipe data sumber.

  • index: Menentukan nomor kolom (dimulai dari 0) dalam file teks tempat kolom saat ini berasal.

  • value: Menentukan bahwa tipe saat ini adalah konstanta. Data tidak dibaca dari file sumber. Sebaliknya, kolom yang sesuai dihasilkan secara otomatis berdasarkan nilai.

Catatan

Anda dapat mengonfigurasi kolom data file (index) atau kolom konstanta (value).

{
  "type": "long",
  "index": 0
  // Obtains the LONG field from the first column (index starts from 0) of the local text file. index indicates that column data is obtained from the data file.
},
{
  "type": "string",
  "value": "alibaba"
  // HDFS Reader internally generates a string field named alibaba as the current field. value indicates a constant column.
}

Ya

Tidak ada

fieldDelimiter

Pemisah bidang untuk membaca data. Saat OSS-HDFS Reader membaca data TextFile, Anda harus menentukan pemisah bidang. Jika Anda tidak menentukan parameter ini, nilai default berupa koma (,) digunakan. Saat OSS-HDFS Reader membaca data ORC atau PARQUET, Anda tidak perlu menentukan pemisah bidang.

Tidak

,

encoding

Format encoding untuk membaca file.

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 merepresentasikan nilai null.

Sebagai contoh, jika Anda mengatur nullFormat:"null", Data Integration memperlakukan data sumber `null` sebagai bidang null.

Tidak

Tidak ada

compress

Hanya kompresi gzip, bzip2, dan snappy yang didukung.

Tidak

Tidak ada

Contoh skrip Writer

{
    "type": "job",
    "version": "2.0",// Version number.
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "oss_hdfs",// Plugin name.
            "parameter": {
                "path": "",// The path to store the file in the OSS-HDFS file system.
                "fileName": "",// The name of the file to be written by OSS-HDFS Writer.
                "compress": "",// The compression type of the OSS-HDFS file.
                "datasource": "",// Data source.
                "column": [
                    {
                        "name": "col1",// Field name.
                        "type": "string"// Field type.
                    },
                    {
                        "name": "col2",
                        "type": "int"
                    },
                    {
                        "name": "col3",
                        "type": "double"
                    },
                    {
                        "name": "col4",
                        "type": "boolean"
                    },
                    {
                        "name": "col5",
                        "type": "date"
                    }
                ],
                "writeMode": "",// Write mode.
                "fieldDelimiter": ",",// Column delimiter.
                "encoding": "",// Encoding format.
                "fileFormat": "text"// Text type.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// Number of error records.
        },
        "speed": {
            "concurrent": 3,// Job concurrency.
            "throttle": false // false indicates that no rate limiting is applied, and the rate limit speed below does not take effect. true indicates that rate limiting is applied.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

fileFormat

Tipe file. Anda hanya dapat mengatur parameter ini ke text, orc, atau parquet.

  • text: menunjukkan bahwa file ditulis dalam format file teks.

  • orc: menunjukkan bahwa file ditulis dalam format file ORC.

  • parquet: menunjukkan bahwa file ditulis dalam format file parquet.

Ya

Tidak ada

path

Path dalam sistem file OSS-HDFS tempat data disimpan. OSS-HDFS Writer menulis beberapa file ke direktori yang ditentukan oleh `path` berdasarkan konfigurasi konkurensi.

Saat mengaitkan dengan tabel Hive, tentukan path penyimpanan tabel Hive di OSS-HDFS. Misalnya, tentukan path penyimpanan gudang data yang diatur di Hive.

Ya

Tidak ada

fileName

Nama file yang akan ditulis oleh OSS-HDFS Writer. Selama eksekusi aktual, sufiks acak ditambahkan ke nama file ini untuk membuat nama file aktual untuk setiap thread.

Ya

Tidak ada

column

Bidang tempat data ditulis. Menulis ke subset kolom tidak didukung.

Saat mengaitkan dengan tabel di Hive, Anda harus menentukan semua nama bidang dan tipe bidang dalam tabel. `name` menentukan nama bidang, dan `type` menentukan tipe bidang.

Anda dapat menentukan informasi bidang kolom sebagai berikut.

{
    "column":
    [
        {
            "name": "userName",
            "type": "string"
        },
        {
            "name": "age",
            "type": "long"
        }
    ]
}

Ya (Jika fileFormat diatur ke parquet, Anda tidak perlu menentukan parameter ini.)

Tidak ada

writeMode

Mode pembersihan data sebelum OSS-HDFS Writer menulis data:

  • append: Tidak ada pemrosesan yang dilakukan sebelum menulis. Data Integration OSS-HDFS Writer langsung menggunakan nama file untuk menulis data dan memastikan tidak ada konflik nama file.

  • nonConflict: Jika file dengan awalan `fileName` sudah ada di direktori, kesalahan dilaporkan.

  • truncate: Sebelum menulis, semua file yang cocok dengan awalan `fileName` dihapus. Misalnya, jika Anda mengatur "fileName": "abc", semua file yang dimulai dengan `abc` di direktori yang sesuai dihapus.

Ya

Tidak ada

fieldDelimiter

Pemisah bidang untuk OSS-HDFS Writer.

Catatan

Hanya pemisah karakter tunggal yang didukung. Jika Anda memasukkan beberapa karakter, terjadi error waktu proses.

Ya (Jika fileFormat diatur ke parquet, Anda tidak perlu menentukan parameter ini.)

Tidak ada

compress

Tipe kompresi untuk file OSS-HDFS. Jika Anda mengosongkan parameter ini, tidak digunakan kompresi.

Untuk file teks, tipe kompresi gzip dan bzip2 didukung.

Tidak

Tidak ada

encoding

Format encoding untuk menulis file.

Tidak

utf-8

parquetSchema

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

message MessageName {
RequiredOrOptional DataType FieldName;
.....................;
}

Item konfigurasi dijelaskan sebagai berikut:

  • Nama pesan: Masukkan nama.

  • Wajib: `required` menunjukkan tidak null, dan `optional` menunjukkan nullable. Kami menyarankan agar Anda mengatur semua bidang ke `optional`.

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

Catatan

Pengaturan untuk setiap baris harus diakhiri dengan titik koma. Baris terakhir juga harus diakhiri dengan titik koma.

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