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.
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:
Folder temporary dibuat dalam sistem file OSS-HDFS berdasarkan path yang ditentukan.
Nama folder tersebut mengikuti aturan path_random.
Anda dapat menulis file yang dibaca ke folder temporary ini.
Setelah semua data ditulis, file-file tersebut dipindahkan dari folder temporary ke folder tujuan yang ditentukan. Sistem memastikan bahwa nama file bersifat unik.
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 |
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
Untuk informasi lebih lanjut, lihat Configure a task in the codeless UI dan Configure a task in the code editor.
Untuk daftar semua parameter dan contoh skrip untuk editor kode, lihat Appendix: OSS-HDFS script demo and parameter descriptions.
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.
Penting
| 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:
| Ya | Tidak ada |
column | Daftar bidang yang akan dibaca. Secara default, Anda dapat membaca semua data sebagai tipe STRING dengan mengatur parameter menjadi Anda juga dapat menentukan informasi bidang kolom sebagai berikut. Parameter dijelaskan sebagai berikut:
Catatan Anda dapat mengonfigurasi kolom data file (index) atau kolom konstanta (value). | 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 | 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.
| 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. | Ya (Jika fileFormat diatur ke parquet, Anda tidak perlu menentukan parameter ini.) | Tidak ada |
writeMode | Mode pembersihan data sebelum OSS-HDFS Writer menulis data:
| 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. Item konfigurasi dijelaskan sebagai berikut:
Catatan Pengaturan untuk setiap baris harus diakhiri dengan titik koma. Baris terakhir juga harus diakhiri dengan titik koma. Berikut adalah contohnya. | Tidak | Tidak ada |