全部产品
Search
文档中心

DataWorks:Sumber data HDFS

更新时间:Jul 06, 2025

DataWorks menyediakan HDFS Reader dan HDFS Writer untuk membaca data dari serta menulis data ke sumber data Hadoop Distributed File System (HDFS). Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data HDFS.

Versi HDFS yang Didukung

Alibaba Cloud Apsara File Storage for HDFS tidak didukung.

Batasan

Pembacaan data batch

Perhatikan hal-hal berikut saat menggunakan HDFS Reader:

  • Koneksi jaringan yang kompleks diperlukan antara grup sumber daya bersama dan HDFS. Oleh karena itu, disarankan untuk menggunakan grup sumber daya eksklusif untuk Data Integration untuk menjalankan tugas sinkronisasi Anda. Pastikan bahwa grup sumber daya eksklusif Anda untuk Data Integration dapat mengakses node NameNode dan DataNode dari HDFS.

  • Secara default, HDFS menggunakan daftar putih jaringan untuk memastikan keamanan data. Dalam hal ini, disarankan untuk menggunakan grup sumber daya eksklusif untuk Data Integration untuk menjalankan tugas sinkronisasi yang menggunakan HDFS Reader.

  • Jika Anda menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi yang menggunakan HDFS Reader, pengujian konektivitas jaringan untuk sumber data HDFS yang digunakan tidak diperlukan. Jika sistem melaporkan kesalahan terkait pengujian konektivitas, Anda dapat mengabaikan kesalahan tersebut.

  • Anda harus menggunakan akun administrator untuk memulai tugas sinkronisasi data. Pastikan bahwa akun administrator memiliki izin untuk membaca dan menulis data pada file HDFS terkait. Jika akun administrator tidak memiliki izin, Anda dapat menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi data dan menambahkan konfigurasi "hdfsUsername": "Akun yang diizinkan" ke dalam kode tugas.

HDFS Reader mendukung fitur-fitur berikut:

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

  • Membaca data berbagai jenis sebagai string, serta mendukung konstanta dan pemangkasan kolom.

  • Mendukung pembacaan rekursif dan ekspresi reguler yang mengandung asterisk (*) dan tanda tanya (?).

  • Mengompresi file ORC dalam format Snappy atau ZLIB.

  • Mengompresi file Sequence dalam format LZO.

  • Menggunakan thread paralel untuk membaca data dari beberapa file.

  • Mengompresi file CSV dalam format GZIP, BZ2, ZIP, LZO, LZO_DEFLATE, atau Snappy.

  • Kompatibel dengan Hive 1.1.1 dan Hadoop 2.7.1 yang bekerja dengan JDK 1.6. HDFS Reader dapat berjalan normal dengan Hive 1.2.0 dan Hadoop 2.5.0 atau Hadoop 2.6.0 selama pengujian.

Penting

HDFS Reader tidak dapat menggunakan thread paralel untuk membaca satu file karena metode sharding internal.

Penulisan data batch

Perhatikan hal-hal berikut saat menggunakan HDFS Writer:

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

  • HDFS adalah sistem file terdistribusi dan tidak memiliki skema. Oleh karena itu, Anda tidak dapat menulis hanya data di beberapa kolom file ke HDFS.

  • Tipe data Hive seperti DECIMAL, BINARY, ARRAYS, MAPS, STRUCTS, dan UNION tidak didukung.

  • HDFS Writer hanya dapat menulis data ke satu partisi dalam tabel Hive yang dipartisi pada satu waktu.

  • Untuk menulis file teks ke HDFS, pastikan bahwa pemisah di file sama dengan yang ada di tabel Hive yang ingin Anda asosiasikan dengan file tersebut. Dengan cara ini, Anda dapat mengasosiasikan kolom-kolom di file yang ditulis ke HDFS dengan kolom-kolom di tabel Hive.

  • HDFS Writer dapat digunakan di lingkungan tempat Hive 1.1.1 dan Hadoop 2.7.1 (versi JDK: 1.7) diinstal. JDK adalah singkatan dari Java Development Kit. HDFS Writer juga dapat menulis file ke HDFS di lingkungan pengujian tempat Hive 1.2.0 dan Hadoop 2.5.0 atau Hadoop 2.6.0 diinstal.

  • HDFS Writer hanya mendukung grup sumber daya eksklusif untuk Data Integration.

Cara kerjanya

HDFS Writer menulis file ke HDFS dengan cara berikut:

  1. Membuat direktori sementara yang tidak ada di HDFS berdasarkan parameter path yang Anda tentukan.

    Direktori sementara ditentukan dalam format path_Suffix acak.

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

  3. Memindahkan file dari direktori sementara ke direktori yang ditentukan setelah semua file selesai ditulis. Nama file yang ingin Anda tulis ke HDFS harus berbeda dari nama file yang sudah ada di HDFS.

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

Catatan

Untuk menyinkronkan data, Anda harus menggunakan akun administrator yang memiliki izin baca dan tulis pada file tertentu.

Pemetaan tipe data

Pembacaan data batch

Hive mempertahankan metadata file dan menyimpan metadata tersebut di metadatabase sendiri, seperti database MySQL. HDFS Reader tidak dapat mengakses atau menanyakan metadata di metadatabase Hive. Oleh karena itu, Anda harus menentukan tipe data yang ingin dikonversi.

Tabel berikut mencantumkan pemetaan tipe data berdasarkan mana HDFS Reader mengonversi tipe data dalam file RC, Parquet, ORC, teks, dan Sequence di Hive.

Kategori

Tipe data Integrasi Data

Tipe data Hive

Integer

long

TINYINT, SMALLINT, INT, dan BIGINT

Floating point

double

FLOAT dan DOUBLE

String

string

STRING, CHAR, VARCHAR, STRUCT, MAP, ARRAY, UNION, dan BINARY

Tanggal dan waktu

date

DATE dan TIMESTAMP

BOOLEAN

boolean

boolean

Catatan
  • LONG: data tipe integer dalam file HDFS, seperti 123456789.

  • DOUBLE: data tipe floating point dalam file HDFS, seperti 3.1415.

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

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

Tipe data TIMESTAMP yang didukung oleh Hive dapat akurat hingga nanodetik. Oleh karena itu, data tipe TIMESTAMP yang disimpan dalam file teks dan ORC mirip dengan 2015-08-21 22:40:47.397898389. Setelah data dikonversi menjadi tipe DATE di Data Integration, bagian nanodetik dalam data hilang. Oleh karena itu, Anda harus menentukan tipe data yang dikonversi menjadi STRING untuk memastikan bahwa bagian nanodetik data tetap ada setelah konversi.

Penulisan data batch

HDFS Writer dapat menulis file teks, ORC, atau Parquet ke direktori tertentu di HDFS. Anda dapat mengasosiasikan kolom-kolom di file dengan kolom-kolom di tabel Hive. HDFS Writer mendukung sebagian besar tipe data Hive. Pastikan bahwa tipe data sistem Anda didukung.

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

Catatan

Tipe data kolom yang ditentukan di file harus sama dengan tipe data kolom di tabel Hive.

Kategori

Tipe data Hive

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 di tab konfigurasi tugas.

Menambahkan Sumber Data

Mengonfigurasi Tugas Sinkronisasi Batch untuk Menyinkronkan Data Tabel Tunggal

Lampiran: Kode dan Parameter

Lampiran: Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode

Kode untuk HDFS Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "hdfs",// Nama plugin.
            "parameter": {
                "path": "",// Jalur file dari mana Anda ingin membaca data.
                "datasource": "",// Nama sumber data.
                "hadoopConfig":{
                "dfs.data.transfer.protection": "integrity",
               "dfs.datanode.use.datanode.hostname" :"true",
                "dfs.client.use.datanode.hostname":"true"
                 },
                "column": [
                    {
                        "index": 0,// Indeks kolom di file sumber. Indeks dimulai dari 0, yang menunjukkan bahwa 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 penyandian.
                "fileType": ""// 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 ketika parameter throttle diatur ke true.
            "mbps":"12"// Laju transmisi maksimum. Unit: MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Contoh berikut menunjukkan konfigurasi HDFS Reader dengan parameter parquetSchema.

Catatan
  • Parameter fileType harus diatur ke parquet.

  • Jika Anda ingin HDFS Reader membaca kolom tertentu dari file Parquet, Anda harus menentukan skema lengkap di parameter parquetSchema dan menentukan kolom yang ingin dibaca menggunakan bidang indeks di parameter kolom.

"reader":  {
    "name": "hdfsreader",
    "parameter": {
        "path": "/user/hive/warehouse/addata.db/dw_ads_rtb_monitor_minute/thedate=20170103/hour_id=22/*",
        "defaultFS": "h10s010.07100.149:8020",
        "column": [
            {
                "index": 0,
                "type": "string"
            },
            {
                "index": 1,
                "type": "long"
            },
            {
                "index": 2,
                "type": "double"
            }
        ],
        "fileType": "parquet",
        "encoding": "UTF-8",
        "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; }"
    }
}

Parameter dalam kode untuk HDFS Reader

Parameter

Deskripsi

Diperlukan

Nilai default

path

Jalur file dari mana Anda ingin membaca data. 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 untuk Parameter Penjadwalan.

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

  • Jika Anda menentukan beberapa file, HDFS Reader menggunakan beberapa thread untuk membaca data dari file tersebut. Jumlah thread ditentukan oleh parameter concurrent.

    Catatan

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

  • Jika sebuah path mengandung wildcard, HDFS Reader mencoba membaca data dari semua file yang sesuai dengan path tersebut. Sebagai contoh, jika Anda menentukan path /bazhen/, HDFS Reader akan membaca semua file dalam direktori bazhen. HDFS Reader hanya mendukung tanda bintang (*) dan tanda tanya (?) sebagai wildcard. Sintaksisnya mirip dengan sintaksis wildcard nama file yang digunakan di baris perintah Linux.

Perhatikan item berikut saat Anda mengonfigurasi parameter path:

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

  • Pembagian tabel: Saat Anda membuat tabel Hive, Anda dapat menentukan partisi. Sebagai contoh, jika Anda menentukan partition(day="20150820", hour="09") saat membuat tabel Hive, direktori bernama /20150820 dan subdirektori bernama /09 akan dibuat di direktori tabel di HDFS.

    Partisi membentuk struktur direktori. Jika Anda ingin membaca semua data dalam partisi tabel, tentukan path di parameter path. Sebagai contoh, jika Anda ingin membaca semua data dalam partisi 20150820 di tabel bernama mytable01, tentukan path dengan cara berikut:

    "path": "/user/hive/warehouse/mytable01/20150820/*"

Ya

Tidak ada nilai default

defaultFS

Titik akhir dari node NameNode di HDFS. Grup sumber daya dibagi tidak mendukung parameter Hadoop lanjutan terkait ketersediaan tinggi.

Ya

Tidak ada nilai default

jenisFile

Format file dari mana Anda ingin membaca data. HDFS Reader secara otomatis mengidentifikasi format file dan menggunakan kebijakan baca terkait. Sebelum HDFS Reader membaca data, ia memeriksa apakah semua file di jalur yang ditentukan sesuai dengan format yang ditentukan oleh parameter fileType. Jika format file tidak sesuai dengan format yang ditentukan oleh parameter fileType, tugas sinkronisasi data gagal.

Nilai valid untuk parameter fileType:

  • text: format teks.

  • orc: format ORC.

  • rc: format RC.

  • seq: format Sequence.

  • csv: format CSV, yang merupakan format file HDFS umum. Data dalam file CSV disusun sebagai tabel dua dimensi logis.

  • parquet: format Parquet.

HDFS Reader mengurai file dalam format teks dan ORC dengan cara yang berbeda. Jika data dikonversi dari tipe data kompleks Hive menjadi tipe STRING yang didukung oleh Data Integration, hasil konversinya berbeda untuk format teks dan ORC. Tipe data kompleks mencakup MAP, ARRAY, STRUCT, dan UNION. Contoh berikut menunjukkan hasil konversi dari tipe MAP ke tipe STRING:

  • Setelah HDFS Reader mengurai dan mengonversi data bertipe MAP dalam file ORC menjadi tipe STRING, hasilnya adalah {job=80, team=60, person=70}.

  • Setelah HDFS Reader mengurai dan mengonversi data bertipe MAP dalam file teks menjadi tipe STRING, hasilnya adalah {job:80, team:60, person:70}.

Hasil konversi menunjukkan bahwa data tetap tidak berubah tetapi formatnya sedikit berbeda. Oleh karena itu, jika kolom yang ingin Anda sinkronkan menggunakan tipe data kompleks Hive, kami sarankan Anda menggunakan format file yang seragam.

Praktik terbaik yang direkomendasikan:

  • Untuk menggunakan format file yang seragam, kami sarankan Anda mengonversi file teks menjadi file ORC di klien Hive Anda.

  • Jika format file adalah Parquet, Anda harus mengonfigurasi parameter parquetSchema, yang menentukan skema data dalam file Parquet.

Ya

Tidak ada nilai default

kolom

Nama kolom dari mana Anda ingin membaca data. Bidang type menentukan tipe data. Bidang index menentukan ID kolom, dimulai dari 0. Bidang value menentukan sebuah konstanta. Jika Anda menentukan bidang value, HDFS Reader akan membaca nilai dari bidang ini. Secara default, HDFS Reader membaca semua data sebagai string. Dalam hal ini, atur parameter ini ke "column": ["*"].

Untuk parameter kolom, Anda harus mengonfigurasi bidang type dan salah satu dari bidang index atau value. Contoh:

{
  "type": "long",
  "index": 0
  // Kolom pertama bertipe INT dari file sumber. Indeks dimulai dari 0. Bidang indeks menunjukkan ID kolom dari mana Anda ingin membaca data di file. 
},
{
  "type": "string",
  "value": "alibaba"
  // Nilai dari kolom saat ini, yang merupakan kolom konstan alibaba. Ini dihasilkan secara internal oleh HDFS Reader. 
}
Catatan
  • Indeks dimulai dari 0, yang berarti HDFS Reader membaca data dari kolom pertama file sumber.

  • Kami merekomendasikan agar Anda menentukan bidang index dan type untuk setiap kolom dari mana Anda ingin membaca data, daripada menggunakan "column": ["*"].

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, HDFS Reader menggunakan koma (,) sebagai pemisah kolom secara default. Jika file sumber adalah file ORC, Anda tidak perlu menentukan pemisah kolom. HDFS Reader menggunakan pemisah default dari Hive, yaitu \u0001.

Catatan
  • Jika Anda ingin setiap baris di sumber diubah menjadi kolom di tujuan, gunakan karakter yang tidak ada dalam baris sebagai pemisah, seperti \u0001.

  • Jangan gunakan \n sebagai pemisah.

Tidak

,

encoding

Format encoding dari file yang ingin Anda baca datanya.

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.

Sebagai contoh, jika Anda mengatur parameter ini ke null, Data Integration akan menganggap null sebagai pointer null.

Catatan

String NULL berbeda dari pointer null. Perhatikan perbedaan di antara keduanya.

Tidak

Tidak ada nilai default

kompres

Format kompresi ketika parameter fileType diatur ke CSV. Format kompresi berikut didukung: GZIP, BZ2, ZIP, LZO, LZO_DEFLATE, Hadoop-Snappy, dan Framing-Snappy.

Catatan
  • LZO dan LZO_DEFLATE adalah dua format kompresi yang berbeda. Jangan mencampuradukkan keduanya saat Anda mengonfigurasi parameter ini.

  • Snappy tidak memiliki format aliran yang seragam. Data Integration hanya mendukung dua format kompresi paling populer: Hadoop-Snappy dan Framing-Snappy. Hadoop-Snappy adalah format aliran Snappy di Hadoop, dan Framing-Snappy adalah format aliran Snappy yang direkomendasikan oleh Google.

  • Parameter ini tidak diperlukan jika Anda mengatur parameter fileType ke ORC.

Tidak

Tidak ada nilai default

parquetSchema

Deskripsi skema data dalam file Parquet. Jika Anda mengatur parameter fileType ke parquet, Anda harus mengonfigurasi parameter parquetSchema. Pastikan nilai parameter parquetSchema sesuai dengan sintaks JSON.

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

Parameter parquetSchema berisi bidang-bidang berikut:

  • MessageTypeName: nama objek MessageType.

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

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

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

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

csvReaderConfig

Konfigurasi yang diperlukan untuk membaca file CSV. Nilai parameter harus sesuai dengan tipe MAP. Anda dapat menggunakan pembaca file CSV untuk membaca data dari file CSV. Pembaca file CSV mendukung beberapa konfigurasi.

Contoh berikut menunjukkan konfigurasi umum:

"csvReaderConfig":{
  "safetySwitch": false,
  "skipEmptyRecords": false,
  "useTextQualifier": false
}

Konfigurasi berikut menunjukkan semua bidang dan nilai defaultnya. Saat mengonfigurasi parameter csvReaderConfig tipe MAP, Anda harus menggunakan nama bidang yang disediakan dalam konfigurasi berikut:

boolean caseSensitive = true;
char textQualifier = 34;
boolean trimWhitespace = true;
boolean useTextQualifier = true;// Menentukan apakah akan menggunakan karakter escape untuk file CSV.
char delimiter = 44;// Delimiter.
char recordDelimiter = 0;
char comment = 35;
boolean useComments = false;
int escapeMode = 1;
boolean safetySwitch = true;// Menentukan apakah akan membatasi panjang setiap kolom hingga 100.000 karakter.
boolean skipEmptyRecords = true;// Menentukan apakah akan melewati baris kosong.
boolean captureRawRecord = true;

Tidak

Tidak ada nilai default

hadoopConfig

Pengaturan parameter Hadoop lanjutan, seperti parameter yang terkait dengan ketersediaan tinggi. Grup sumber daya dibagi tidak mendukung parameter Hadoop lanjutan yang terkait dengan ketersediaan tinggi.

"hadoopConfig":{
"dfs.nameservices": "testDfs",
"dfs.ha.namenodes.testDfs": "namenode1,namenode2",
"dfs.namenode.rpc-address.youkuDfs.namenode1": "",
"dfs.namenode.rpc-address.youkuDfs.namenode2": "",
"dfs.client.failover.proxy.provider.testDfs": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"dfs.data.transfer.protection": "integrity",
"dfs.datanode.use.datanode.hostname" :"true",
"dfs.client.use.datanode.hostname":"true"
}
Catatan
"hadoopConfig":{ "dfs.data.transfer.protection": "integrity", "dfs.datanode.use.datanode.hostname" :"true", "dfs.client.use.datanode.hostname":"true" }

Pengaturan di atas digunakan untuk mengonfigurasi otentikasi Kerberos di HDFS Reader. Jika Anda mengonfigurasi otentikasi Kerberos untuk sumber data HDFS, Anda tidak perlu mengonfigurasinya di HDFS Reader. Untuk informasi lebih lanjut tentang cara menambahkan sumber data HDFS, lihat Tambahkan sumber data HDFS.

Tidak

Tidak ada nilai default

haveKerberos

Menentukan apakah akan mengaktifkan autentikasi Kerberos. Nilai default: false. Jika Anda menetapkan parameter ini ke true, Anda juga harus mengonfigurasi parameter kerberosKeytabFilePath dan kerberosPrincipal.

Tidak

false

kerberosKeytabFilePath

Jalur absolut dari file keytab untuk otentikasi Kerberos. Parameter ini diperlukan jika parameter haveKerberos diatur ke true.

Tidak

Tidak ada nilai default

kerberosPrincipal

Prinsipal Kerberos, seperti ****/hadoopclient@**.***. Parameter ini diperlukan jika parameter haveKerberos diatur ke true.

Catatan

Path absolut dari file keytab diperlukan untuk otentikasi Kerberos. Oleh karena itu, Anda harus mengonfigurasi otentikasi Kerberos untuk grup sumber daya eksklusif untuk Data Integration. Kode berikut memberikan contoh konfigurasi:

"haveKerberos":true,
"kerberosKeytabFilePath":"/opt/datax/**.keytab",
"kerberosPrincipal":"**/hadoopclient@**.**"

Tidak

Tidak ada nilai default

Kode untuk HDFS Writer

{
    "type": "job",
    "version": "2.0",// Nomor versi.
    "steps": [
        { 
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "hdfs",// Nama plugin.
            "parameter": {
                "path": "",// Direktori di HDFS ke mana Anda ingin menulis file.
                "fileName": "",// Awalan nama file yang ingin Anda tulis ke HDFS.
                "compress": "",// Format kompresi file yang ingin Anda tulis ke 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 penyandian.
                "fileType": "text"// Format file yang ingin Anda tulis ke 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.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter dalam kode untuk HDFS Writer

Parameter

Deskripsi

Diperlukan

Nilai default

defaultFS

Alamat node NameNode di HDFS, seperti hdfs://127.0.0.1:9000. Jika Anda menggunakan grup sumber daya bersama untuk Data Integration, Anda tidak dapat mengonfigurasi parameter Hadoop lanjutan yang terkait dengan ketersediaan tinggi. Jika Anda ingin mengonfigurasi parameter-parameter ini, Anda harus menggunakan grup sumber daya kustom untuk Data Integration. Untuk informasi lebih lanjut, lihat Buat dan Gunakan Grup Sumber Daya Kustom untuk Data Integration.

Ya

Tidak ada nilai default

fileType

Format file yang ingin Anda tulis ke HDFS. Nilai valid:

  • text: file teks yang memetakan tabel penyimpanan di Hive.

  • orc: file ORC yang memetakan tabel terkompresi di Hive.

  • parquet: file Parquet umum.

Ya

Tidak ada nilai default

path

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

Untuk mengasosiasikan kolom-kolom di file dengan kolom-kolom di tabel Hive, atur parameter path ke jalur penyimpanan tabel Hive di HDFS. Misalnya, jalur penyimpanan yang ditentukan untuk gudang data Hive adalah /user/hive/warehouse/. Dalam hal ini, jalur penyimpanan tabel hello yang dibuat di database test adalah /user/hive/warehouse/test.db/hello.

Ya

Tidak ada nilai default

fileName

Awalan nama file yang ingin Anda tulis ke HDFS. Suffix acak ditambahkan ke awalan yang ditentukan untuk membentuk nama file aktual 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 di tabel Hive.

Untuk mengasosiasikan kolom-kolom di file dengan kolom-kolom di 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 fileType diatur ke text atau orc

Tidak ada nilai default

writeMode

Mode penulisan. Nilai valid:

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

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

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

Catatan

File Parquet tidak mendukung mode append. Untuk menulis file Parquet, Anda harus mengatur parameter writeMode ke nonConflict.

Ya

Tidak ada nilai default

fieldDelimiter

Pemisah kolom yang digunakan dalam file yang ingin Anda tulis ke HDFS. Pastikan Anda menggunakan pemisah yang sama dengan yang ada di tabel Hive. Jika tidak, Anda tidak dapat menanyakan data di tabel Hive.

Catatan

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

Diperlukan jika parameter fileType diatur ke text atau orc

Tidak ada nilai default

compress

Format kompresi file yang ingin Anda tulis ke 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 penyandian file yang ingin Anda tulis ke HDFS.

Tidak

Tidak ada nilai default

parquetSchema

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

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

Bidang:

  • MessageTypeName: nama objek MessageType.

  • required: menunjukkan bahwa kolom tidak boleh kosong. Anda juga dapat menentukan optional berdasarkan kebutuhan bisnis Anda. Kami menyarankan 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 yang 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

hadoopConfig

Pengaturan parameter Hadoop lanjutan, seperti parameter terkait ketersediaan tinggi. Jika Anda menggunakan grup sumber daya bersama untuk Data Integration, Anda tidak dapat mengonfigurasi parameter Hadoop lanjutan yang terkait dengan ketersediaan tinggi. Jika Anda ingin mengonfigurasi parameter-parameter ini, Anda harus menggunakan grup sumber daya kustom untuk Data Integration. Untuk informasi lebih lanjut, lihat Buat dan Gunakan Grup Sumber Daya Kustom untuk Data Integration.

"hadoopConfig":{
"dfs.nameservices": "testDfs",
"dfs.ha.namenodes.testDfs": "namenode1,namenode2",
"dfs.namenode.rpc-address.youkuDfs.namenode1": "",
"dfs.namenode.rpc-address.youkuDfs.namenode2": "",
"dfs.client.failover.proxy.provider.testDfs": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
}

Tidak

Tidak ada nilai default

dataxParquetMode

Mode sinkronisasi untuk file Parquet. Nilai valid: fields dan columns. Jika Anda mengatur parameter ini ke fields, HDFS Writer dapat menulis data tipe kompleks, seperti ARRAY, MAP, dan STRUCT.

Jika Anda mengatur parameter ini ke fields, HDFS Writer mendukung HDFS di atas Object Storage Service (OSS). Dalam hal ini, HDFS menggunakan OSS sebagai layanan penyimpanan, dan HDFS Writer menulis file Parquet ke OSS. Anda dapat menambahkan parameter-parameter terkait OSS berikut dalam parameter hadoopConfig:

  • fs.oss.accessKeyId: ID AccessKey dari akun yang dapat Anda gunakan untuk terhubung ke OSS.

  • fs.oss.accessKeySecret: Rahasia AccessKey dari akun yang dapat Anda gunakan untuk terhubung ke OSS.

  • fs.oss.endpoint: Titik akhir OSS.

Kode contoh berikut memberikan contoh cara terhubung ke OSS:

```json
    "writer": {
    "name": "hdfswriter",
    "parameter": {
        "defaultFS": "oss://test-bucket",
        "fileType": "parquet",
        "path": "/datasets/oss_demo/kpt",
        "fileName": "test",
        "writeMode": "truncate",
        "encoding": "UTF-8",
        "hadoopConfig": {
            "fs.oss.accessKeyId": "the-access-id",
            "fs.oss.accessKeySecret": "the-access-key",
            "fs.oss.endpoint": "oss-cn-hangzhou.aliyuncs.com"
            },
            "parquetSchema": "message test {\n    required int64 id;\n    optional binary name (UTF8);\n    optional int64 gmt_create;\n    required group map_col (MAP) {\n        repeated group key_value {\n            required binary key (UTF8);\n            required binary value (UTF8);\n        }\n    }\n    required group array_col (LIST) {\n        repeated group list {\n            required binary element (UTF8);\n        }\n    }\n    required group struct_col {\n        required int64 id;\n        required binary name (UTF8);\n    }    \n}",
            "dataxParquetMode": "fields"
            }
        }
    ```

Tidak

columns

haveKerberos

Menentukan apakah otentikasi Kerberos diperlukan. Jika Anda mengatur parameter ini ke true, parameter kerberosKeytabFilePath dan kerberosPrincipal diperlukan.

Tidak

false

kerberosKeytabFilePath

Jalur absolut file keytab untuk otentikasi Kerberos.

Diperlukan jika parameter haveKerberos diatur ke true.

Tidak ada nilai default

kerberosPrincipal

Prinsipal Kerberos, seperti ****/hadoopclient@**.***. Parameter ini diperlukan jika parameter haveKerberos diatur ke true.

Jalur absolut file keytab diperlukan untuk otentikasi Kerberos. Untuk menggunakan otentikasi Kerberos, Anda harus mengonfigurasi otentikasi Kerberos pada grup sumber daya kustom. Kode berikut memberikan contoh konfigurasi:

"haveKerberos":true,
"kerberosKeytabFilePath":"/opt/datax/**.keytab",
"kerberosPrincipal":"**/hadoopclient@**.**"

Tidak

Tidak ada nilai default