全部产品
Search
文档中心

DataWorks:Sumber data OSS-HDFS

更新时间:Jul 06, 2025

OSS-HDFS (JindoFS) adalah layanan penyimpanan danau data cloud-native. DataWorks menyediakan OSS-HDFS Reader dan OSS-HDFS Writer untuk membaca data dari dan menulis data ke sumber data OSS-HDFS. Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data OSS-HDFS.

Batasan

Pembacaan data batch

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

    Koneksi jaringan antara grup sumber daya dan OSS-HDFS kompleks. Disarankan untuk menggunakan grup sumber daya eksklusif untuk Data Integration saat menjalankan tugas sinkronisasi data dengan sumber data OSS-HDFS. Pastikan grup sumber daya eksklusif Anda dapat mengakses jaringan tempat sumber data OSS-HDFS berada.

  • OSS-HDFS Reader mendukung fitur-fitur berikut:

    • Mendukung format file teks, CSV, ORC, dan Parquet. Data dalam file-file ini harus diatur sebagai tabel dua dimensi logis.

    • Membaca data berbagai jenis dan mendukung konstanta.

    • Mendukung pembacaan rekursif serta wildcard asterisk (*) dan tanda tanya (?).

    • Menggunakan thread paralel untuk membaca data dari beberapa file.

Penting

Saat ini, OSS-HDFS Reader tidak dapat membaca data dari satu file menggunakan thread paralel karena metode sharding internal.

Penulisan data batch

Perhatikan hal-hal berikut ketika menggunakan OSS-HDFS Writer:

  • OSS-HDFS Writer hanya dapat menulis file teks, ORC, dan Parquet yang menyimpan tabel dua dimensi logis ke OSS-HDFS.

  • Untuk menulis file teks ke OSS-HDFS, pastikan pemisah dalam file sesuai dengan yang ada di tabel Hive yang ingin diasosiasikan dengan file tersebut. Dengan cara ini, kolom-kolom dalam file yang ditulis ke OSS-HDFS dapat diasosiasikan dengan kolom-kolom dalam tabel Hive.

Penulisan data real-time

  • Penulisan data real-time didukung.

  • Anda dapat menulis data dari OSS-HDFS ke Hudi 0.14.x secara real-time.

Cara kerjanya

OSS-HDFS Writer menulis file ke OSS-HDFS melalui langkah-langkah berikut:

  1. Membuat direktori sementara yang belum ada di OSS-HDFS berdasarkan parameter path yang ditentukan.

    Direktori sementara ditentukan dalam format path_Sufiks acak.

  2. Menulis file yang diperoleh dari reader ke direktori sementara.

  3. Memindahkan file dari direktori sementara ke direktori yang ditentukan setelah semua file selesai ditulis. Nama file yang akan ditulis ke OSS-HDFS harus berbeda dari nama file yang sudah ada di OSS-HDFS.

  4. Menghapus direktori sementara. Jika OSS-HDFS Writer gagal terhubung ke OSS-HDFS karena gangguan jaringan, Anda harus menghapus direktori sementara dan semua file di dalamnya secara manual.

Pemetaan tipe data

Pembacaan data batch

Tabel berikut mencantumkan pemetaan tipe data berdasarkan mana OSS-HDFS Reader mengonversi tipe data dalam file Parquet, ORC, teks, dan CSV.

Kategori

Tipe data OSS-HDFS

Integer

TINYINT, SMALLINT, INT, dan BIGINT

Floating point

FLOAT, DOUBLE, dan DECIMAL

String

STRING, CHAR, dan VARCHAR

Tanggal dan waktu

DATE dan TIMESTAMP

Boolean

BOOLEAN

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

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

  • BOOLEAN: Data bertipe Boolean dalam file OSS-HDFS, seperti true atau false. Data tidak peka huruf besar/kecil.

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

Penulisan data batch

OSS-HDFS Writer dapat menulis file teks, ORC, atau Parquet ke direktori tertentu di OSS-HDFS.

Tabel berikut mencantumkan pemetaan tipe data berdasarkan mana OSS-HDFS Writer mengonversi tipe data.

Kategori

Tipe data OSS-HDFS

Integer

TINYINT, SMALLINT, INT, dan BIGINT

Floating point

FLOAT dan DOUBLE

String

CHAR, VARCHAR, dan STRING

Boolean

BOOLEAN

Tanggal dan waktu

DATE dan TIMESTAMP

Mengembangkan tugas sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi data, lihat bagian-bagian berikut. Untuk informasi tentang pengaturan parameter, lihat infotip setiap parameter pada tab konfigurasi tugas.

Menambahkan sumber data

Sebelum mengonfigurasi tugas sinkronisasi data untuk menyinkronkan data dari atau ke sumber data tertentu, Anda harus menambahkan sumber data ke DataWorks. Untuk informasi lebih lanjut, lihat Tambahkan dan Kelola Sumber Data.

Mengonfigurasi tugas sinkronisasi batch untuk menyinkronkan data satu tabel

Mengonfigurasi tugas sinkronisasi real-time untuk menyinkronkan data satu tabel

Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Buat Tugas Sinkronisasi Real-Time untuk Menyinkronkan Data Inkremental dari Satu Tabel dan Konfigurasikan Tugas Sinkronisasi Real-Time di DataStudio.

Konfigurasikan pengaturan sinkronisasi untuk menerapkan sinkronisasi real-time data penuh atau inkremental dalam database

Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Konfigurasikan Tugas Sinkronisasi di Data Integration.

Lampiran: Kode dan parameter

Lampiran: Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi batch, Anda harus mengonfigurasi parameter untuk reader dan writer sumber data terkait sesuai dengan persyaratan format dalam editor kode. Untuk informasi lebih lanjut tentang persyaratan format, lihat Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode. Informasi berikut menjelaskan detail konfigurasi parameter untuk reader dan writer dalam editor kode.

Kode untuk OSS-HDFS Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oss_hdfs",// Nama Plugin.
            "parameter": {
                "path": "",// Path file dari mana Anda ingin membaca data.
                "datasource": "",// Nama sumber data.
                "column": [
                    {
                        "index": 0,// Indeks kolom dalam file sumber. Indeks dimulai dari 0, yang menunjukkan bahwa OSS-HDFS Reader membaca data dari kolom pertama file sumber.
                        "type": "string"// Tipe bidang.
                    },
                    {
                        "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"
                    }
                ],
                "fieldDelimiter": ",",// Pemisah kolom.
                "encoding": "UTF-8",// Format encoding.
                "fileFormat": ""// Format file.
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// Jumlah maksimum catatan data kotor yang diizinkan.
        },
        "speed": {
            "concurrent": 3,// Jumlah maksimum thread paralel.
            "throttle": true // Menentukan apakah throttling diaktifkan. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle diatur ke true.
            "mbps":"12"// Laju transmisi maksimum. Unit: MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter dalam kode untuk OSS-HDFS Reader

Parameter

Deskripsi

Diperlukan

Nilai default

path

Path file dari mana Anda ingin membaca data.

  • Jika Anda menentukan satu file OSS-HDFS, OSS-HDFS Reader hanya menggunakan satu thread untuk membaca data dari file tersebut.

  • Jika Anda menentukan beberapa file OSS-HDFS, OSS-HDFS Reader menggunakan thread paralel untuk membaca data dari file-file tersebut. Jumlah thread ditentukan oleh parameter concurrent. Jika Anda ingin membaca data dari beberapa file, Anda dapat menentukan ekspresi reguler, seperti /hadoop/data_201704*. Jika nama file berisi informasi waktu dan informasi waktu disajikan secara teratur, Anda dapat menggunakan parameter penjadwalan bersama dengan ekspresi reguler. Nilai parameter penjadwalan diganti berdasarkan cap waktu data tugas. Untuk informasi lebih lanjut tentang parameter penjadwalan, lihat Format yang didukung dari parameter penjadwalan.

    Catatan

    Jumlah thread yang sebenarnya dimulai selalu sama dengan nilai yang lebih kecil antara jumlah file OSS-HDFS yang ingin Anda baca dan jumlah thread paralel yang Anda konfigurasi.

  • Jika path berisi wildcard, OSS-HDFS Reader mencoba membaca data dari semua file yang sesuai dengan path. Misalnya, jika Anda menentukan path sebagai /oss-hdfs/, OSS-HDFS Reader membaca semua file di direktori oss-hdfs. OSS-HDFS Reader hanya mendukung asterisk (*) dan tanda tanya (?) sebagai wildcard. Sintaksnya mirip dengan sintaks wildcard nama file yang digunakan di baris perintah Linux.

Penting
  • Data Integration menganggap semua file yang akan dibaca dalam tugas sinkronisasi data sebagai satu tabel. Pastikan semua file dapat menyesuaikan dengan skema yang sama dan Data Integration memiliki izin untuk membaca semua file tersebut.

  • Pastikan pasangan AccessKey yang Anda tentukan saat menambahkan sumber data OSS-HDFS memiliki izin baca pada sumber data OSS-HDFS.

Ya

Tidak ada nilai default

fileFormat

Format file dari mana Anda ingin membaca data.

OSS-HDFS Reader secara otomatis mengidentifikasi format file dan menggunakan kebijakan baca terkait. Sebelum OSS-HDFS Reader membaca data, ia memeriksa apakah semua file di path yang ditentukan cocok dengan format yang ditentukan oleh parameter fileFormat. Jika format file tidak cocok dengan format yang ditentukan oleh parameter fileFormat, tugas sinkronisasi data gagal.

Nilai valid dari parameter fileFormat:

  • TEXT: format teks.

  • ORC: format ORC.

  • CSV: format CSV, yang merupakan format file OSS-HDFS umum. Data dalam file CSV diatur sebagai tabel dua dimensi logis.

  • PARQUET: format Parquet.

Ya

Tidak ada nilai default

column

Nama kolom dari mana Anda ingin membaca data. Secara default, OSS-HDFS Reader membaca semua data sebagai string. Dalam hal ini, atur parameter ini ke "column": ["*"].

Anda juga dapat mengonfigurasi parameter column dalam format berikut:

  • type: menentukan tipe data kolom sumber.

  • index: menentukan ID kolom sumber, dimulai dari 0.

  • value: menentukan konstanta. Jika Anda menentukan field value, OSS-HDFS Reader membaca nilai field ini.

Catatan

Untuk parameter column, Anda harus mengonfigurasi field type dan salah satu dari field index dan value.

{
  "type": "long",
  "index": 0
  // Kolom LONG-tipe pertama dari file sumber. Indeks dimulai dari 0. Field index menunjukkan ID kolom dari mana Anda ingin membaca data dalam file.
},
{
  "type": "string",
  "value": "alibaba"
  // Nilai kolom saat ini, yaitu kolom konstan alibaba. Ini dihasilkan secara internal oleh OSS-HDFS Reader.
}

Ya

Tidak ada nilai default

fieldDelimiter

Pemisah kolom dari mana Anda ingin membaca data. Jika file sumber adalah file teks, Anda harus menentukan pemisah kolom. Jika Anda tidak menentukan pemisah kolom, OSS-HDFS Reader menggunakan koma (,) sebagai pemisah kolom secara default. Jika file sumber adalah file ORC atau Parquet, Anda tidak perlu menentukan pemisah kolom.

Tidak

,

encoding

Format encoding file dari mana Anda ingin membaca data.

Tidak

utf-8

nullFormat

String yang mewakili pointer null. Tidak ada string standar yang dapat mewakili pointer null dalam file teks. Anda dapat menggunakan parameter ini untuk menentukan string mana yang mewakili pointer null.

Contohnya, jika Anda mengatur parameter ini ke null, Data Integration menganggap null sebagai pointer null.

Tidak

Tidak ada nilai default

compress

Format kompresi. Format kompresi berikut didukung: GZIP, BZIP2, dan Snappy.

Tidak

Tidak ada nilai default

Kode untuk OSS-HDFS Writer

{
    "type": "job",
    "version": "2.0",// Nomor versi.
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "oss_hdfs",// Nama Plugin.
            "parameter": {
                "path": "",// Direktori di OSS-HDFS ke mana file ditulis.
                "fileName": "",// Awalan nama file yang ingin Anda tulis ke OSS-HDFS.
                "compress": "",// Format kompresi file yang ingin Anda tulis ke OSS-HDFS.
                "datasource": "",// Nama sumber data.
                "column": [
                    {
                        "name": "col1",// Nama kolom.
                        "type": "string"// Tipe data kolom.
                    },
                    {
                        "name": "col2",
                        "type": "int"
                    },
                    {
                        "name": "col3",
                        "type": "double"
                    },
                    {
                        "name": "col4",
                        "type": "boolean"
                    },
                    {
                        "name": "col5",
                        "type": "date"
                    }
                ],
                "writeMode": "",// Mode penulisan.
                "fieldDelimiter": ",",// Pemisah kolom.
                "encoding": "",// Format encoding.
                "fileFormat": "text"// Format file yang ingin Anda tulis ke OSS-HDFS.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// Jumlah maksimum catatan data kotor yang diizinkan.
        },
        "speed": {
            "concurrent": 3,// Jumlah maksimum thread paralel.
            "throttle": false // Menentukan apakah throttling diaktifkan. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle diatur ke true.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter dalam kode untuk OSS-HDFS Writer

Parameter

Deskripsi

Diperlukan

Nilai default

fileFormat

Format file dari mana Anda ingin membaca data.

  • text: tipe file yang ingin Anda tulis ke OSS-HDFS adalah teks.

  • orc: tipe file yang ingin Anda tulis ke OSS-HDFS adalah ORC.

  • parquet: tipe file yang ingin Anda tulis keOSS-HDFS adalah Parquet.

Ya

Tidak ada nilai default

path

Direktori di OSS-HDFS ke mana Anda ingin menulis file. OSS-HDFS Writer menulis beberapa file ke direktori berdasarkan konfigurasi thread paralel.

Untuk mengasosiasikan kolom dalam file dengan kolom dalam tabel Hive, atur parameter path ke jalur penyimpanan tabel Hive di OSS-HDFS. Misalnya, Anda dapat menentukan jalur penyimpanan untuk gudang data Hive.

Ya

Tidak ada nilai default

fileName

Awalan nama file yang ingin Anda tulis ke OSS-HDFS. Sufiks acak ditambahkan ke awalan yang ditentukan untuk membentuk nama file sebenarnya yang digunakan oleh setiap thread.

Ya

Tidak ada nilai default

column

Nama kolom ke mana Anda ingin menulis data. Anda tidak dapat menulis data hanya ke beberapa kolom dalam tabel Hive.

Untuk mengasosiasikan kolom dalam file dengan kolom dalam tabel Hive, konfigurasikan parameter name dan type untuk setiap kolom. Parameter name menentukan nama kolom, dan parameter type menentukan tipe data kolom.

Anda dapat mengonfigurasi parameter column dalam format berikut:

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

Diperlukan jika parameter fileFormat diatur ke text atau orc

Tidak ada nilai default

writeMode

Mode penulisan. Nilai valid:

  • append: OSS-HDFS Writer menulis file berdasarkan awalan nama file yang ditentukan dan memastikan bahwa nama file sebenarnya tidak bertentangan dengan nama file yang sudah ada.

  • nonConflict: OSS-HDFS Writer mengembalikan kesalahan jika file dengan awalan nama file yang ditentukan ada di direktori tujuan.

  • truncate: OSS-HDFS Writer menghapus semua file yang ada yang namanya dimulai dengan awalan nama file yang ditentukan dari direktori tujuan sebelum file ditulis ke direktori tersebut. Misalnya, jika Anda mengatur fileName ke abc, semua file yang ada yang namanya dimulai dengan abc dihapus dari direktori tujuan.

Ya

Tidak ada nilai default

fieldDelimiter

Pemisah kolom yang digunakan dalam file yang ingin Anda tulis ke OSS-HDFS.

Catatan

Hanya pemisah satu karakter yang didukung. Jika Anda menentukan pemisah multi-karakter, kesalahan akan dilaporkan.

Diperlukan jika parameter fileFormat diatur ke text atau orc

Tidak ada nilai default

compress

Format kompresi file yang ingin Anda tulis ke OSS-HDFS. Secara default, parameter ini dibiarkan kosong, yang menunjukkan bahwa file tidak dikompresi.

Untuk file teks, format kompresi GZIP dan BZIP2 didukung.

Tidak

Tidak ada nilai default

encoding

Format encoding file yang ingin Anda tulis ke OSS-HDFS.

Tidak

utf-8

parquetSchema

Skema file Parquet yang ingin Anda tulis ke OSS-HDFS. Parameter ini tersedia hanya jika parameter fileFormat diatur ke parquet. Format:

message MessageName {
required, dataType, columnName;
.....................;
}

Parameter:

  • MessageName: nama objek MessageName.

  • required: menunjukkan bahwa kolom tidak boleh dibiarkan kosong. Anda juga dapat menentukan optional berdasarkan kebutuhan bisnis Anda. Kami merekomendasikan Anda menentukan optional untuk semua kolom.

  • dataType: File Parquet mendukung berbagai tipe data, seperti BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE, BINARY, dan FIXED_LEN_BYTE_ARRAY. Atur parameter ini ke BINARY jika kolom menyimpan string.

Catatan

Setiap baris, termasuk baris terakhir, harus diakhiri dengan titik koma (;).

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 nilai default