全部产品
Search
文档中心

DataWorks:Sumber Data FTP

更新时间:Jul 02, 2025

DataWorks menyediakan FTP Reader dan FTP Writer untuk membaca data dari serta menulis data ke sumber data FTP. Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data FTP.

Batasan

FTP Reader terhubung ke server FTP jarak jauh, membaca data dari server tersebut, lalu mengonversi format data menjadi format yang dapat dibaca oleh Data Integration. File di server FTP hanya menyimpan data tidak terstruktur. Tabel berikut mencantumkan fitur yang didukung dan tidak didukung oleh FTP Reader:

Didukung

Tidak Didukung

  • Membaca data dari file TXT. Data dalam file harus berupa tabel dua dimensi logis.

  • Membaca data dari file mirip CSV dengan pemisah kustom.

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

  • Mendukung pembacaan data rekursif dan penyaringan berdasarkan nama file.

  • Mendukung kompresi file. Format kompresi berikut didukung: GZIP, BZIP2, ZIP, LZO, dan LZO_DEFLATE.

  • Menggunakan thread paralel untuk membaca data dari beberapa file.

  • Menggunakan thread paralel untuk membaca satu file.

  • Menggunakan thread paralel untuk membaca file terkompresi.

FTP Writer mengonversi data yang diperoleh dari reader menjadi file dan menulis file tersebut ke server FTP. File di server FTP hanya menyimpan data tidak terstruktur. Tabel berikut mencantumkan fitur yang didukung dan tidak didukung oleh FTP Writer:

Didukung

Tidak Didukung

  • Hanya menulis file teks ke server FTP. Data dalam file harus diatur sebagai tabel dua dimensi logis. FTP Writer tidak dapat menulis file yang menyimpan data objek besar biner (BLOB), seperti data video, ke server FTP.

  • Menulis file TXT dan mirip CSV yang berisi pemisah kustom ke server FTP.

  • Menggunakan thread paralel untuk menulis file ke server FTP. Setiap thread menulis satu file.

  • Menggunakan thread paralel untuk menulis satu file ke server FTP.

  • Membedakan antara tipe data. FTP tidak membedakan antara tipe data. Oleh karena itu, FTP Writer menulis semua data sebagai string ke file di server FTP.

  • Menulis file terkompresi ke server FTP.

Pemetaan Tipe Data

File FTP jarak jauh tidak membedakan antara tipe data. Tipe data ditentukan oleh FTP Reader.

Tipe Data Integrasi Data

Tipe Data dalam File FTP

LONG

LONG

DOUBLE

DOUBLE

STRING

STRING

BOOLEAN

BOOLEAN

DATE

DATE

Tambahkan Sumber Data

Kembangkan Tugas Sinkronisasi Data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi data, lihat bagian berikut.

Konfigurasikan Tugas Sinkronisasi Batch untuk Menyinkronkan Data dari Satu Tabel

Lampiran: Kode dan Parameter

Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode

Kode untuk FTP Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"ftp",// Nama plugin.
            "parameter":{
                "path":[],// Jalur file.
                "nullFormat":"",// String yang mewakili pointer kosong.
                "compress":"",// Format kompresi file.
                "datasource":"",// Nama sumber data.
                "column":[// Nama kolom.
                    {
                        "index":0,// ID kolom.
                        "type":""// Tipe data.
                    }
                ],
                "skipHeader":"",// Menentukan apakah akan melewati header dalam file jika file memiliki header.
                "fieldDelimiter":",",// Pemisah kolom.
                "encoding":"UTF-8",// Format pengkodean.
                "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,// Menentukan apakah akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel ke true.
            "concurrent":1 // Jumlah maksimum thread paralel.
            "mbps":"12",// Kecepatan transmisi maksimum. Unit: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter dalam Kode untuk FTP Reader

Parameter

Deskripsi

Diperlukan

Nilai Default

datasource

Nama sumber data. Harus sama dengan nama sumber data yang telah ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode.

Ya

Tidak ada nilai default

path

Jalur pada server FTP dari mana Anda ingin membaca data. Jalur harus berupa jalur lengkap yang berisi jalur direktori tempat file yang diinginkan disimpan dan berisi nama file dengan akhiran. Anda dapat menentukan beberapa jalur.

  • Jika Anda hanya menentukan satu jalur, FTP Reader hanya menggunakan satu thread untuk membaca file terkait. Fitur menggunakan thread paralel untuk membaca data dari satu file yang tidak terkompresi akan tersedia di masa mendatang.

  • Jika Anda menentukan beberapa jalur, FTP Reader menggunakan thread paralel untuk membaca file terkait. Jumlah sebenarnya dari thread ditentukan oleh jumlah saluran.

  • Jika jalur berisi wildcard, FTP Reader mencoba membaca semua file yang sesuai dengan jalur. Misalnya, jika Anda menentukan jalur /bazhen/, FTP Reader membaca semua file di direktori bazhen. FTP Reader hanya mendukung asterisk (*) sebagai wildcard. FTP Reader memungkinkan Anda menggunakan parameter penjadwalan untuk mengonfigurasi nama file dan jalur file.

Catatan
  • Kami merekomendasikan agar Anda tidak menggunakan asterisk (*) karena kesalahan out of memory (OOM) dapat terjadi pada Java Virtual Machine (JVM).

  • Data Integration menganggap semua file teks dalam tugas sinkronisasi sebagai satu tabel. Pastikan semua file dalam tugas sinkronisasi menggunakan skema yang sama.

  • Pastikan format datanya mirip dengan CSV dan dapat dibaca oleh Data Integration.

  • Jika tidak ada file yang dapat dibaca di jalur yang ditentukan, FTP Reader melaporkan kesalahan.

Ya

Tidak ada nilai default

column

Kolom dari mana Anda ingin membaca data. Parameter type menentukan tipe data kolom. Parameter index menentukan ID kolom dalam tabel sumber, dimulai dari 0. Parameter value menentukan nilai kolom jika kolom adalah kolom konstan.

Secara default, FTP Reader membaca semua data sebagai string. Dalam hal ini, atur parameter ini ke "column":["*"]. Anda juga dapat mengonfigurasi parameter column dalam format berikut:

{
    "type": "long",
    "index": 0    // Kolom pertama bertipe INT dari file yang ingin Anda baca.
  },
  {
    "type": "string",
    "value": "alibaba"  // Nilai kolom saat ini. Dalam kode ini, nilainya adalah konstanta alibaba.
  }

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

Ya

Tidak ada nilai default

fieldDelimiter

Pemisah kolom yang digunakan dalam file dari mana Anda ingin membaca data.

Catatan

Anda harus menentukan pemisah kolom untuk FTP Reader. Pemisah default adalah koma (,). Jika Anda tidak menentukan pemisah kolom, pemisah kolom default digunakan.

Ya

,

skipHeader

Menentukan apakah akan melewati header dalam file mirip CSV jika file memiliki header. Parameter skipHeader tidak didukung untuk file terkompresi. Nilai default parameter ini adalah false, yang menunjukkan bahwa FTP Reader tidak melewati header dalam file mirip CSV.

Tidak

false

encoding

Format pengkodean file yang ingin Anda tulis ke server FTP.

Tidak

utf-8

nullFormat

String yang mewakili pointer kosong. Tidak ada string standar yang dapat mewakili pointer kosong dalam file TXT. Anda dapat menggunakan parameter ini untuk mendefinisikan string yang mewakili pointer kosong. Contoh:

  • Jika Anda menentukan nullFormat:"null", reader menganggap string null yang dapat dicetak sebagai pointer kosong.

  • Jika Anda menentukan nullFormat:"\u0001", reader menganggap string \u0001 yang tidak dapat dicetak sebagai pointer kosong.

  • Jika Anda tidak mengonfigurasi parameter nullFormat, reader tidak mengonversi data sumber.

Tidak

Tidak ada nilai default

markDoneFileName

Nama file yang digunakan untuk menunjukkan bahwa tugas sinkronisasi dapat dimulai. Data Integration memeriksa apakah file tersebut ada sebelum sinkronisasi data. Jika file tidak ada, Data Integration memeriksa lagi nanti. Data Integration hanya memulai tugas sinkronisasi setelah file terdeteksi.

Tidak

Tidak ada nilai default

maxRetryTime

Jumlah maksimum percobaan ulang untuk deteksi file jika tidak ada file yang terdeteksi. Secara default, maksimal 60 percobaan ulang diizinkan. Data Integration mendeteksi file setiap 1 menit. Seluruh proses berlangsung selama 60 menit.

Tidak

60

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.

Tidak

Tidak ada nilai default

fileFormat

Format file. Secara default, FTP Reader membaca data dari file CSV. Data dalam file CSV harus berupa tabel dua dimensi logis. Jika Anda menentukan binary sebagai format file, data dikonversi ke format biner untuk replikasi dan transmisi.

Anda perlu mengonfigurasi parameter ini hanya jika Anda ingin mereplikasi struktur direktori lengkap antara sistem penyimpanan seperti FTP dan Object Storage Service (OSS).

Tidak

Tidak ada nilai default

Kode untuk FTP Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"ftp",// Nama plugin.
            "parameter":{
                "path":"",// Direktori pada server FTP ke mana Anda ingin menulis file.
                "fileName":"",// Awalan nama file yang ingin Anda tulis ke server FTP.
                "nullFormat":"null",// String yang mewakili pointer kosong.
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// Format waktu.
                "datasource":"",// Nama sumber data.
                "writeMode":"",// Mode penulisan.
                "fieldDelimiter":",",// Pemisah kolom.
                "encoding":"",// Format pengkodean.
                "fileFormat":""// Format penulisan file oleh FTP Writer.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
        },
        "speed":{
            "throttle":true,// Menentukan apakah akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel ke true.
            "concurrent":1, // Jumlah maksimum thread paralel.
            "mbps":"12"// Kecepatan transmisi maksimum. Unit: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter dalam Kode untuk FTP Writer

Parameter

Deskripsi

Diperlukan

Nilai Default

datasource

Nama sumber data. Harus sama dengan nama sumber data yang telah ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode.

Ya

Tidak ada nilai default

timeout

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

Tidak

60.000

path

Direktori pada server FTP ke mana Anda ingin menulis file. FTP Writer menggunakan thread paralel untuk menulis beberapa file ke direktori berdasarkan pengaturan paralelisme.

Ya

Tidak ada nilai default

fileName

Awalan nama file yang ingin Anda tulis ke server FTP. Akhiran acak ditambahkan ke nama file untuk membentuk nama file sebenarnya yang digunakan oleh setiap thread.

Ya

Tidak ada nilai default

singleFileOutput

Menentukan apakah akan menambahkan akhiran acak ke nama file yang ingin Anda tulis ke server FTP. Nama file yang ditulis oleh FTP Writer ke server FTP terkait dengan nilai parameter fileName. Jika Anda tidak memerlukan akhiran acak, atur parameter singleFileOutput ke true. Dalam hal ini, FTP Writer menulis file ke server FTP menggunakan awalan nama file.

Tidak

false

writeMode

Mode penulisan file oleh FTP Writer. Nilai valid:

  • truncate: Jika parameter singleFileOutput disetel ke true, FTP Writer menghapus file dengan nama yang sama di direktori tujuan sebelum menulis file ke direktori. Jika parameter singleFileOutput disetel ke false, FTP Writer menghapus semua file yang ada yang namanya berisi awalan yang ditentukan oleh fileName di direktori tujuan sebelum menulis file ke direktori.

  • append: FTP Writer langsung menulis file berdasarkan awalan nama file yang ditentukan oleh fileName dan memastikan bahwa nama file sebenarnya tidak bertentangan dengan nama file yang ada.

  • nonConflict: FTP Writer mengembalikan kesalahan jika direktori tujuan berisi file yang namanya berisi awalan yang ditentukan oleh fileName.

Ya

Tidak ada nilai default

fieldDelimiter

Pemisah kolom yang digunakan dalam file yang ingin Anda tulis ke server FTP. Pemisah harus berupa satu karakter.

Ya

Tidak ada nilai default

skipHeader

Menentukan apakah akan melewati header dalam file mirip CSV jika file memiliki header. Secara default, header tidak dilewati. Parameter skipHeader tidak tersedia untuk file terkompresi.

Tidak

false

compress

Format kompresi file yang ingin Anda tulis ke server FTP. Nilai valid: gzip dan bzip2.

Tidak

Bukan nilai default

encoding

Format pengkodean file yang ingin Anda tulis ke server FTP.

Tidak

utf-8

nullFormat

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

Sebagai contoh, jika Anda menyetel nullFormat ke null, Data Integration menganggap null sebagai pointer kosong (4 karakter).

Tidak

Tidak ada nilai default

dateFormat

Format serialisasi data tipe DATE dalam file, seperti "dateFormat":"yyyy-MM-dd".

Tidak

Tidak ada nilai default

fileFormat

Format penulisan file ke server FTP. Nilai valid: CSV dan TEXT. Jika file ditulis sebagai file CSV, file tersebut harus mengikuti spesifikasi CSV. Jika data dalam file berisi pemisah kolom, pemisah kolom tersebut di-escape dengan tanda kutip ganda ("). Jika file ditulis sebagai file TXT, data dalam file dipisahkan oleh pemisah kolom. Dalam hal ini, pemisah kolom tidak di-escape.

Tidak

TEXT

header

Header tabel jika file ditulis sebagai file TXT atau CSV, seperti ["id","name","age"]. Ini menunjukkan bahwa bidang id, name, dan age ditulis ke file CSV sebagai baris pertama.

Tidak

Tidak ada nilai default

markDoneFileName

  • Nama file yang digunakan untuk menunjukkan bahwa tugas sinkronisasi berhasil dijalankan. Data Integration memeriksa apakah file tersebut ada setelah sinkronisasi data. Atur parameter ini ke jalur absolut file.

  • Untuk tugas sinkronisasi batch yang dijadwalkan secara berkala, kami merekomendasikan agar Anda menambahkan parameter penjadwalan ke nama file. Sebagai contoh, Anda dapat menyetel nama file menjadi /user/ftp/markDone_${bizdate}.txt, di mana ${bizdate} menunjukkan parameter penjadwalan.

Tidak

Tidak ada nilai default