全部产品
Search
文档中心

DataWorks:FTP

更新时间:Mar 01, 2026

Sumber data FTP menyediakan saluran dua arah untuk membaca data dari dan menulis data ke server FTP. Topik ini menjelaskan kemampuan sinkronisasi data sumber data FTP di DataWorks.

Batasan

FTP Reader membaca data dari file FTP jarak jauh dan mengonversinya ke dalam format yang dibutuhkan oleh protokol sinkronisasi data. Karena file FTP jarak jauh pada dasarnya tidak terstruktur, FTP Reader mendukung fitur-fitur berikut untuk sinkronisasi data:

Dukungan

Tidak didukung

  • Hanya membaca file TXT. Skema dalam file TXT harus berupa tabel dua dimensi.

  • Mendukung file mirip CSV dengan pemisah kustom.

  • Mendukung pembacaan berbagai tipe data (direpresentasikan sebagai STRING), pruning kolom, dan konstanta kolom.

  • Mendukung pembacaan rekursif dan penyaringan berdasarkan nama file.

  • Mendukung kompresi teks. Format kompresi yang didukung adalah gzip, bzip2, zip, lzo, dan lzo_deflate.

  • Mendukung pembacaan konkuren dari beberapa file.

  • Pembacaan konkuren multi-threaded dari satu file. Hal ini melibatkan algoritma chunking internal untuk satu file.

  • Pembacaan konkuren multi-threaded dari satu file terkompresi secara teknis tidak didukung.

FTP Writer mengonversi data dari format yang dibutuhkan oleh protokol integrasi data dan menuliskannya ke file FTP. Karena file FTP pada dasarnya tidak terstruktur, FTP Writer mendukung fitur-fitur berikut:

Dukungan

Tidak didukung

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

  • Mendukung format file mirip CSV dan TEXT dengan pemisah kustom.

  • Mendukung penulisan multi-threaded. Setiap thread menulis ke sub-file yang berbeda.

  • Penulisan konkuren ke satu file tidak didukung.

  • FTP tidak menyediakan tipe data. FTP Writer menulis semua data ke file FTP sebagai tipe STRING.

  • Kompresi teks tidak didukung saat menulis data.

Tipe bidang yang didukung

File FTP jarak jauh tidak memiliki tipe data native. Oleh karena itu, tipe bidang yang tercantum dalam bagian ini didefinisikan oleh DataX FtpReader.

Tipe internal DataX

Tipe data file FTP remote

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 di Data source management. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Kembangkan task sinkronisasi data

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

Panduan konfigurasi task sinkronisasi offline single-table

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasikan task sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengatur parameter terkait dalam skrip sesuai dengan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan task di editor kode. Informasi berikut menjelaskan parameter yang perlu Anda konfigurasi untuk sumber data saat mengatur task sinkronisasi batch menggunakan editor kode.

Demo skrip Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"ftp",// Nama plugin.
            "parameter":{
                "path":[],// Jalur file.
                "nullFormat":"",// Nilai null.
                "compress":"",// Format kompresi.
                "datasource":"",// Sumber data.
                "column":[// Bidang.
                    {
                        "index":0,// Nomor seri.
                        "type":""// Tipe bidang.
                    }
                ],
                "skipHeader":"",// Menentukan apakah file berisi header tabel.
                "fieldDelimiter":",",// Pemisah kolom.
                "encoding":"UTF-8",// Format encoding.
                "fileFormat":"csv"// Jenis file teks.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
        "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Batasan laju. 1 mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan.

Ya

Tidak ada

path

Jalur dan nama file dalam sistem file FTP remote. Tentukan jalur lengkap yang mencakup nama file dan ekstensinya. Anda dapat menentukan beberapa jalur.

  • Jika Anda menentukan satu file FTP remote, FTP Reader hanya dapat menggunakan satu thread untuk mengekstraksi data. Di versi mendatang, pembacaan konkuren multi-threaded dari satu file tak terkompresi akan didukung.

  • Jika Anda menentukan beberapa file FTP remote, FTP Reader mendukung ekstraksi data multi-threaded. Jumlah thread konkuren ditentukan oleh jumlah channel.

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

Catatan
  • Kami menyarankan agar Anda tidak menggunakan tanda bintang (*) karena dapat menyebabkan error overflow memori Java Virtual Machine (JVM).

  • Sinkronisasi data memperlakukan semua file teks yang disinkronkan dalam satu job sebagai satu tabel data. Anda harus memastikan bahwa semua file dapat disesuaikan dengan skema yang sama.

  • Anda harus memastikan bahwa file yang akan dibaca berformat mirip CSV dan bahwa sistem sinkronisasi data memiliki izin baca pada file tersebut.

  • Jika tidak ditemukan file yang cocok di jalur yang ditentukan oleh parameter path, task sinkronisasi akan melaporkan error.

Ya

Tidak ada

column

Daftar bidang yang akan dibaca. type menentukan tipe data sumber. index menentukan nomor kolom bidang dalam file teks. Nilai index dimulai dari 0. value menentukan bahwa bidang saat ini adalah konstanta. Data tidak dibaca dari file sumber. Sebaliknya, kolom yang sesuai dihasilkan secara otomatis berdasarkan nilai value.

Secara default, Anda dapat membaca semua data sebagai tipe STRING dengan mengatur parameter menjadi "column":["*"]. Anda juga dapat menentukan informasi bidang column. Contoh kode berikut menunjukkan cara penggunaannya.

{
    "type": "long",
    "index": 0    // Mengambil bidang LONG dari kolom pertama file teks FTP remote.
  },
  {
    "type": "string",
    "value": "alibaba"  // Menghasilkan bidang string bernama alibaba dari dalam FTP Reader untuk digunakan sebagai bidang saat ini.
  }

Untuk informasi column yang Anda tentukan, type wajib diisi. Anda harus menentukan salah satu antara index atau value.

Ya

Tidak ada

fieldDelimiter

Pemisah bidang untuk membaca data.

Catatan

Saat FTP Reader membaca data, Anda harus menentukan pemisah bidang. Jika Anda tidak menentukan parameter ini, nilai default (,) akan digunakan. UI juga menggunakan (,) sebagai nilai default.

Ya

,

skipHeader

File mirip CSV mungkin memiliki baris header yang perlu dilewati. Secara default, baris header tidak dilewati. skipHeader tidak didukung untuk file terkompresi.

Tidak

false

encoding

Format encoding file yang akan dibaca.

Tidak

utf-8

nullFormat

Dalam file teks, Anda tidak dapat menggunakan string standar untuk mendefinisikan pointer null. Sinkronisasi data menyediakan parameter nullFormat untuk mendefinisikan string mana yang dapat merepresentasikan null. Contohnya:

  • Jika Anda mengatur nullFormat:"null", yang setara dengan karakter yang dapat dicetak, dan data sumber adalah null, sinkronisasi data memperlakukannya sebagai bidang null.

  • Jika Anda mengatur nullFormat:"\u0001", yang setara dengan karakter tak tercetak, dan data sumber adalah string `"\u0001"`, sinkronisasi data memperlakukannya sebagai bidang null.

  • Jika Anda tidak menentukan parameter "nullFormat", yang setara dengan tidak mengonfigurasinya, data sumber ditulis ke tujuan apa adanya tanpa konversi apa pun.

Tidak

Tidak ada

markDoneFileName

Nama file mark. Sebelum sinkronisasi data, sistem memeriksa keberadaan file mark. Jika file mark tidak ada, sistem menunggu selama periode tertentu lalu memeriksa lagi. Jika file mark ditemukan, task sinkronisasi dimulai.

Tidak

Tidak ada

maxRetryTime

Jumlah percobaan ulang untuk memeriksa file mark. Nilai default adalah 60. Interval percobaan ulang adalah 1 menit. Durasi total adalah 60 menit.

Tidak

60

csvReaderConfig

Pengaturan parameter untuk membaca file CSV. Parameter ini bertipe Map. CsvReader digunakan untuk membaca file CSV dan memiliki banyak opsi konfigurasi. Jika Anda tidak mengonfigurasi parameter ini, nilai default akan digunakan.

Tidak

Tidak ada

fileFormat

Jenis file yang akan dibaca. Secara default, file dibaca sebagai file CSV, dan kontennya diurai menjadi struktur tabel logis dua dimensi. Jika Anda mengatur parameter ini ke binary, file disalin dan ditransfer dalam format biner murni.

Parameter ini biasanya digunakan untuk replikasi peer-to-peer struktur direktori antar sistem penyimpanan seperti FTP dan OSS. Biasanya Anda tidak perlu mengonfigurasi parameter ini.

Tidak

Tidak ada

Demo skrip Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"ftp",// Nama plugin.
            "parameter":{
                "path":"",// Jalur file.
                "fileName":"",// Nama file.
                "nullFormat":"null",// Nilai null.
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// Format waktu.
                "datasource":"",// Sumber data.
                "writeMode":"",// Mode penulisan.
                "fieldDelimiter":",",// Pemisah kolom.
                "encoding":"",// Format encoding.
                "fileFormat":""// Jenis file teks.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
            "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Batasan laju. 1 mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan.

Ya

Tidak ada

timeout

Periode timeout koneksi saat menghubungkan ke server FTP. Satuan: milidetik.

Tidak

60.000 (1 menit)

path

Jalur dalam sistem file FTP. FTP Writer menulis beberapa file ke direktori yang ditentukan oleh path.

Ya

Tidak ada

fileName

Nama file yang akan ditulis oleh FTP Writer. Sufiks acak ditambahkan ke nama file ini untuk membuat nama file aktual bagi setiap thread penulisan.

Ya

Tidak ada

singleFileOutput

Nama file yang ditulis oleh FtpWriter dikontrol oleh fileName. Secara default, sufiks acak ditambahkan untuk membuat nama file aktual bagi setiap thread penulisan. Jika Anda tidak ingin sufiks acak ditambahkan, Anda dapat mengatur singleFileOutput ke true. Nama file output akan menjadi nama file lengkap yang Anda tentukan.

Tidak

false

writeMode

Mode pembersihan data sebelum FTP Writer menulis data:

  • truncate: Jika singleFileOutput bernilai true, file dengan nama yang sama di direktori akan dihapus sebelum penulisan. Jika singleFileOutput bernilai false, semua file dengan awalan fileName di direktori akan dihapus sebelum penulisan.

  • append: Tidak ada pemrosesan sebelum penulisan. Data Integration FTP Writer langsung menulis data menggunakan fileName dan memastikan bahwa nama file tidak bentrok.

  • nonConflict: Jika file dengan awalan fileName sudah ada di direktori, error akan dilaporkan.

Ya

Tidak ada

fieldDelimiter

Pemisah bidang untuk menulis data.

Ya, satu karakter

Tidak ada

skipHeader

File mirip CSV mungkin memiliki baris header yang perlu dilewati. Secara default, baris header tidak dilewati. skipHeader tidak didukung untuk file terkompresi.

Tidak

false

compress

Mendukung format kompresi gzip dan bzip2.

Tidak

Tidak ada kompresi

encoding

Anda dapat membaca konfigurasi encoding 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 cara merepresentasikan nilai null.

Contohnya, jika Anda mengatur nullFormat="null" dan data sumber adalah pointer null, Data Integration meng-serialize-nya menjadi string literal null (empat karakter).

Tidak

Tidak ada

dateFormat

Format yang digunakan untuk meng-serialize data bertipe tanggal ke dalam file. Contoh: "dateFormat":"yyyy-MM-dd".

Tidak

Tidak ada

fileFormat

Format penulisan file. Nilai yang valid adalah CSV dan TEXT. CSV adalah format CSV ketat. Jika data yang akan ditulis mengandung pemisah kolom, data tersebut di-escape sesuai sintaks escape CSV. Karakter escape adalah tanda kutip ganda ("). Format TEXT hanya memisahkan data yang akan ditulis dengan pemisah kolom dan tidak melakukan escaping meskipun data mengandung pemisah tersebut.

Tidak

TEXT

header

header: Header file teks (termasuk CSV, TEXT, dll.) yang akan ditulis. Editor kode mendukung konfigurasi informasi header. Contohnya, "header":["id","name","age"] menentukan bahwa id, name, dan age ditulis sebagai header di baris pertama file FTP.

Tidak

Tidak ada

markDoneFileName

  • Nama file mark. Setelah task sinkronisasi selesai, file mark dihasilkan. File ini menunjukkan apakah task sinkronisasi berhasil. Anda harus mengonfigurasi parameter ini dengan jalur mutlak.

  • Dalam skenario task offline yang dipicu otomatis, kami menyarankan agar Anda menyertakan parameter penjadwalan dalam nama file mark. Misalnya, Anda dapat mengatur nama file mark menjadi `/user/ftp/markDone_${bizdate}.txt`, di mana `${bizdate}` adalah parameter penjadwalan.

Tidak

Tidak ada