All Products
Search
Document Center

DataWorks:Sumber data FTP

Last Updated:Sep 04, 2026

DataWorks mendukung FTP sebagai sumber data untuk membaca dan menulis data ke server FTP.

Batasan

FTP Reader membaca data dari file FTP remote dan mengonversinya ke dalam protokol Data Integration. File FTP remote disimpan sebagai data tidak terstruktur.

Didukung

Tidak didukung

  • Hanya membaca data dari file teks. Skema data dalam file teks tersebut harus berupa tabel dua dimensi.

  • Membaca data dari file mirip CSV dengan pemisah kustom.

  • Membaca data dalam format JSON dan JSONL.

  • Membaca data berbagai tipe data sebagai string. Pemangkasan kolom dan kolom konstan didukung.

  • Mendukung pembacaan rekursif dan penyaringan nama file.

  • Mendukung kompresi file. Format kompresi yang didukung: gzip, bzip2, zip, lzo, dan lzo_deflate.

  • Mendukung pembacaan konkuren dari beberapa file.

  • Pembacaan konkuren satu file menggunakan thread paralel. Hal ini memerlukan algoritma pemisahan file internal.

  • Pembacaan konkuren satu file terkompresi menggunakan thread paralel tidak didukung karena keterbatasan teknis.

FTP Writer mengonversi data berdasarkan protokol Data Integration dan menulis data tersebut ke file pada server FTP.

Didukung

Tidak didukung

  • Hanya menulis data ke file teks. Data BLOB seperti video tidak didukung. Skema data dalam file teks tersebut harus berupa tabel dua dimensi.

  • Menulis data ke file mirip CSV, TEXT, JSON, dan JSONL dengan pemisah kustom.

  • Menulis data menggunakan thread paralel. Setiap thread menulis data ke sub-file yang berbeda.

  • Penulisan konkuren ke satu file.

  • Tipe data native. FTP Writer menulis semua data sebagai tipe data STRING.

  • Kompresi file saat data ditulis.

Tipe data yang didukung

File FTP remote tidak memiliki tipe data native. Tipe data didefinisikan oleh FTP Reader dalam Data Integration.

Tipe Data Integration

Tipe FTP

LONG

LONG

DOUBLE

DOUBLE

STRING

STRING

BOOLEAN

BOOLEAN

DATE

DATE

Tambahkan sumber data

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

Kembangkan task sinkronisasi data

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

Sinkronisasi batch tabel tunggal

Lampiran: Contoh skrip dan parameter

Konfigurasi task sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasi mode skrip. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat Anda mengonfigurasi task sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"ftp",// Nama plug-in.
            "parameter":{
                "path":[],// Jalur file.
                "nullFormat":"",// Nilai null.
                "compress":"",// Format kompresi.
                "datasource":"",// Sumber data.
                "column":[// Kolom.
                    {
                        "index":0,// ID.
                        "type":""// Tipe data.
                    }
                ],
                "skipHeader":"",// Menentukan apakah menyertakan header.
                "fieldDelimiter":",",// Pemisah kolom.
                "encoding":"UTF-8",// Format encoding.
                "fileFormat":"csv"// Format file.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
        },
        "speed":{
        "throttle":true,// Jika false, parameter mbps diabaikan dan tidak ada pembatasan kecepatan. Jika true, pembatasan kecepatan diterapkan berdasarkan nilai mbps.
            "concurrent":1, // Konkurensi job.
            "mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data, yang harus sesuai dengan nama sumber data yang telah Anda konfigurasi di DataWorks.

Ya

Tidak ada

path

Jalur file sumber pada sistem file FTP remote. Anda harus menentukan jalur lengkap file sumber, termasuk ekstensi nama file. Anda dapat menentukan beberapa jalur.

  • Jika Anda menentukan satu file FTP remote, FTP Reader hanya dapat menggunakan satu thread untuk mengekstraksi data. Versi FTP Reader mendatang akan mendukung pembacaan konkuren dari satu file tak terkompresi menggunakan thread paralel.

  • Jika Anda menentukan beberapa file FTP remote, FTP Reader dapat menggunakan thread paralel untuk mengekstraksi data. Jumlah thread konkuren ditentukan oleh jumlah saluran (channel).

  • Jika Anda menentukan wildcard, FTP Reader akan mencoba melakukan traversal dan menemukan beberapa file. Misalnya, jika Anda menentukan /, FTP Reader membaca semua file dalam direktori /. Jika Anda menentukan /bazhen/, FTP Reader membaca semua file dalam direktori /bazhen/. FTP Reader hanya mendukung tanda bintang (*) sebagai wildcard file. Anda juga dapat menggunakan parameter penjadwalan untuk mengonfigurasi nama file dan jalur file secara fleksibel.

Catatan
  • Hindari penggunaan wildcard tanda bintang (*). Wildcard ini dapat menyebabkan error kehabisan memori (OOM) pada Java Virtual Machine (JVM).

  • Data Integration menganggap semua file teks yang disinkronkan dalam satu pekerjaan sebagai satu tabel data. Anda harus memastikan bahwa semua file dapat diproses dengan skema yang sama.

  • Anda harus memastikan bahwa file dalam format mirip CSV dan sistem Data Integration memiliki izin baca atas file tersebut.

  • Jika tidak ditemukan file yang sesuai dengan jalur yang ditentukan, task sinkronisasi data akan gagal.

Ya

Tidak ada

column

Daftar kolom yang akan dibaca. type menentukan tipe data dari data sumber:

  • Format CSV/TEXT: index menentukan kolom dari mana Anda ingin membaca data. Nilainya berbasis 0. value menentukan nilai konstan.

  • Format JSON/JSONL: Gunakan jsonPath untuk menentukan ekspresi JSONPath guna mengekstraksi bidang. value menentukan nilai konstan.

Secara bawaan, Anda dapat membaca semua data sebagai tipe STRING menggunakan konfigurasi "column":["*"]. Anda dapat menentukan bidang column sebagai berikut.

// Format CSV/TEXT
{
    "type": "long",
    "index": 0    // Membaca data dari kolom pertama file teks FTP remote sebagai bidang INT.
  },
  {
    "type": "string",
    "value": "alibaba"  // Menghasilkan bidang string dengan nilai alibaba di FTP Reader.
  }
// Format JSON/JSONL
{
    "name": "id",
    "jsonPath": "$.id",
    "type": "LONG"
  },
  {
    "name": "name",
    "jsonPath": "$.user.name",
    "type": "STRING"
  },
  {
    "name": "source",
    "value": "ftp",
    "type": "STRING"
  }

Untuk column yang ditentukan, Anda harus menentukan type. Untuk format CSV/TEXT, pilih salah satu antara index atau value. Untuk format JSON/JSONL, pilih salah satu antara jsonPath atau value.

Ya

Tidak ada

fieldDelimiter

Pemisah yang digunakan untuk memisahkan kolom dalam file sumber.

Catatan

Anda harus menentukan pemisah agar FTP Reader dapat membaca data. Jika tidak menentukan pemisah, koma (,) bawaan akan digunakan. Di UI, koma (,) juga ditentukan secara bawaan.

Ya

,

skipHeader

File mirip CSV mungkin memiliki header. Anda dapat melewatkan header tersebut. Secara bawaan, header tidak dilewati. Parameter ini tidak didukung untuk file terkompresi.

Tidak

false

encoding

Encoding file sumber.

Tidak

utf-8

nullFormat

File teks tidak dapat menggunakan string standar untuk nilai null (null pointer). Gunakan nullFormat untuk menentukan string mana yang merepresentasikan nilai null. Contoh:

  • Jika Anda mengatur parameter ini ke nullFormat:"null" dan data sumber adalah string "null", Data Integration memproses data sumber sebagai nilai null.

  • Jika Anda mengatur parameter ini ke nullFormat:"\u0001" dan data sumber adalah string \u0001, Data Integration memproses data sumber sebagai nilai null.

  • Jika Anda tidak mengonfigurasi parameter "nullFormat", tidak ada konversi yang dilakukan, dan data sumber ditulis ke tujuan apa adanya.

Tidak

Tidak ada

markDoneFileName

Nama file mark-done. Sebelum task sinkronisasi data dimulai, sistem memeriksa apakah file mark-done ada. Jika file tersebut tidak ada, sistem menunggu periode waktu tertentu lalu memeriksa lagi. Task baru dimulai setelah file terdeteksi.

Tidak

Tidak ada

maxRetryTime

Jumlah percobaan ulang untuk pemeriksaan file mark-done. Nilai bawaan adalah 60. Interval antar percobaan ulang adalah 1 menit, sehingga total waktu tunggu menjadi 60 menit.

Tidak

60

csvReaderConfig

Parameter yang digunakan untuk membaca file CSV. Nilainya harus bertipe Map. File CSV dibaca oleh CsvReader. Beberapa konfigurasi tersedia. Jika Anda tidak mengonfigurasi parameter ini, nilai bawaan akan digunakan.

Tidak

Tidak ada

fileFormat

Format file sumber. Nilai yang valid: csv, text, json, dan jsonl. Secara bawaan, file dibaca sebagai file CSV dan diproses sebagai tabel dua dimensi logis. Jika Anda mengatur parameter ini ke binary, file disalin dalam format biner.

Parameter ini biasanya digunakan untuk mencerminkan struktur direktori antar sistem penyimpanan seperti FTP dan OSS. Dalam kebanyakan kasus, Anda tidak perlu mengonfigurasi parameter ini.

Tidak

Tidak ada

Contoh skrip Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"ftp",// Nama plug-in.
            "parameter":{
                "path":"",// Jalur file.
                "fileName":"",// Nama file.
                "nullFormat":"null",// Nilai null.
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// Format tanggal.
                "datasource":"",// Sumber data.
                "writeMode":"",// Mode penulisan.
                "fieldDelimiter":",",// Pemisah kolom.
                "encoding":"",// Format encoding.
                "fileFormat":""// Format file.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
        },
        "speed":{
            "throttle":true,// Jika false, parameter mbps diabaikan dan tidak ada pembatasan kecepatan. Jika true, pembatasan kecepatan diterapkan berdasarkan nilai mbps.
            "concurrent":1, // Konkurensi job.
            "mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data, yang harus sesuai dengan nama sumber data yang telah Anda konfigurasi di DataWorks.

Ya

Tidak ada

timeout

Periode timeout untuk koneksi ke server FTP. Satuan: milidetik.

Tidak

60.000 (1 menit)

path

Jalur tujuan pada sistem file FTP. FTP Writer menulis beberapa file ke direktori yang ditentukan oleh parameter ini.

Ya

Tidak ada

fileName

Nama file tempat FTP Writer menulis data. Akhiran acak ditambahkan ke nama file ini untuk membuat nama file aktual bagi setiap thread.

Ya

Tidak ada

singleFileOutput

Secara bawaan, FTP Writer menambahkan akhiran acak ke fileName yang ditentukan untuk membuat nama file unik bagi setiap thread. Jika Anda tidak ingin akhiran acak ditambahkan, Anda dapat mengatur parameter ini ke true. Dengan demikian, nama file output persis seperti yang Anda tentukan.

Tidak

false

writeMode

Mode untuk menghapus data sebelum menulis.

  • truncate: Jika singleFileOutput adalah true, file yang memiliki nama sama di direktori tujuan dihapus sebelum data ditulis. Jika singleFileOutput adalah false, semua file yang memiliki awalan fileName yang ditentukan di direktori tujuan dihapus sebelum data ditulis.

  • append: Tidak ada data yang dihapus. FTP Writer menulis file langsung menggunakan fileName yang ditentukan dan memastikan tidak terjadi konflik nama file.

  • nonConflict: Jika file yang memiliki awalan fileName yang ditentukan sudah ada di direktori, task gagal dan kesalahan dilaporkan.

Ya

Tidak ada

fieldDelimiter

Pemisah yang digunakan untuk memisahkan kolom dalam file tujuan.

Ya (hanya satu karakter)

Tidak ada

skipHeader

File mirip CSV mungkin memiliki header yang perlu dilewati. Secara bawaan, header tidak dilewati. File terkompresi tidak mendukung skipHeader.

Tidak

false

compress

Format kompresi yang didukung: gzip dan bzip2.

Tidak

Tidak ada kompresi

encoding

Encoding file tujuan.

Tidak

utf-8

nullFormat

File teks tidak dapat menggunakan string standar untuk nilai null (null pointer). Gunakan nullFormat untuk menentukan string mana yang merepresentasikan nilai null.

Sebagai contoh, jika Anda mengonfigurasi nullFormat="null", ketika data sumber adalah null pointer, Data Integration mengubahnya menjadi string literal 'null' (4 karakter).

Tidak

Tidak ada

dateFormat

Format untuk mengubah data bertipe DATE menjadi file. Contoh: "dateFormat":"yyyy-MM-dd".

Tidak

Tidak ada

fileFormat

Format file tujuan. Nilai yang valid: CSV, TEXT, JSON, dan JSONL. CSV adalah format ketat. Jika data yang akan ditulis mengandung pemisah kolom, data tersebut akan di-escape dengan tanda kutip ganda (") berdasarkan aturan escape CSV. TEXT adalah format sederhana yang menggunakan pemisah kolom untuk memisahkan data. Pemisah dalam data tidak di-escape.

Tidak

TEXT

header

Header yang ditulis ke file teks. Dalam mode skrip, Anda dapat mengonfigurasi informasi header. Misalnya, Anda dapat mengatur parameter ini ke "header":["id","name","age"]. Kemudian, id, name, dan age ditulis sebagai header di baris pertama file FTP.

Tidak

Tidak ada

markDoneFileName

  • Nama file mark-done. Setelah task sinkronisasi data selesai, sistem menghasilkan file mark-done. Anda dapat memeriksa file ini untuk menentukan apakah task berhasil. Anda harus menentukan jalur mutlak untuk file ini.

  • Untuk task batch periodik, sertakan parameter penjadwalan dalam nama file. Misalnya, Anda dapat mengatur nama file menjadi /user/ftp/markDone_${bizdate}.txt, di mana ${bizdate} adalah parameter penjadwalan.

Tidak

Tidak ada