全部产品
Search
文档中心

DataWorks:Sumber Data Amazon S3

更新时间:Jan 30, 2026

Amazon S3 (Simple Storage Service) adalah layanan penyimpanan objek yang memungkinkan Anda menyimpan dan mengambil data dalam jumlah berapa pun dari mana saja. Data Integration di DataWorks mendukung pembacaan dan penulisan data ke Amazon S3. Topik ini menjelaskan fitur-fitur sumber data Amazon S3.

Batasan

Baca Batch

Amazon S3 adalah layanan penyimpanan data tidak terstruktur. Reader Amazon S3 di Data Integration mendukung fitur-fitur berikut.

Didukung

Tidak Didukung

  • Mendukung pembacaan file hanya dalam format TXT. File tersebut harus berisi skema yang merepresentasikan tabel dua dimensi.

  • Mendukung file mirip CSV dengan pemisah kustom.

  • Mendukung format ORC dan PARQUET.

  • Mendukung pembacaan berbagai tipe data sebagai string, pemangkasan kolom, dan kolom konstan.

  • Mendukung pembacaan rekursif dan penyaringan berdasarkan nama file.

  • Mendukung kompresi teks menggunakan gzip, bzip2, dan zip.

    Catatan

    Arsip terkompresi yang berisi beberapa file tidak didukung.

  • Mendukung pembacaan konkuren beberapa Object.

  • Multi-threading untuk membaca satu Object tidak didukung.

  • Multi-threading untuk membaca satu Object terkompresi tidak didukung.

  • Satu Object tidak boleh melebihi 100 GB.

Tulis Batch

Writer Amazon S3 mengonversi data dari protokol Sinkronisasi Data menjadi file teks di Amazon S3. Karena Amazon S3 adalah layanan penyimpanan data tidak terstruktur, Writer Amazon S3 mendukung fitur-fitur berikut.

Didukung

Tidak Didukung

  • Hanya mendukung penulisan file teks. Data BLOB seperti video dan gambar tidak didukung. File teks tersebut harus berisi skema yang merepresentasikan tabel dua dimensi.

  • Mendukung file mirip CSV dengan pemisah kustom.

  • Mendukung format ORC dan PARQUET.

    Catatan

    Dalam Script Mode, format kompresi SNAPPY didukung.

  • Mendukung multi-threading untuk menulis, di mana setiap thread menulis ke sub-file yang berbeda.

  • Ketika ukuran file melebihi batas tertentu, writer membuat file baru.

  • Penulisan konkuren ke satu file tidak didukung.

  • Amazon S3 tidak memiliki tipe data native. Writer Amazon S3 menulis semua data sebagai tipe STRING ke Object Amazon S3.

  • Penulisan ke bucket Amazon S3 yang menggunakan kelas penyimpanan Glacier Deep Archive tidak didukung.

  • Satu Object tidak boleh melebihi 100 GB.

Tambahkan sumber data

Sebelum mengembangkan task sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Manajemen Sumber Data. 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.

Konfigurasikan task sinkronisasi batch tabel tunggal

Lampiran: Contoh 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 persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan task di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengatur task sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"s3",// Nama plugin.
            "parameter":{
                "nullFormat":"",// Menentukan string yang merepresentasikan nilai null.
                "compress":"",// Jenis kompresi teks.
                "datasource":"",// Sumber data.
                "column":[// Bidang.
                    {
                        "index":0,// Indeks kolom.
                        "type":"string"// Tipe data.
                    },
                    {
                        "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"
                    }
                ],
                "skipHeader":"",// Melewati header file mirip CSV.
                "encoding":"",// Format encoding.
                "fieldDelimiter":",",// Pemisah bidang.
                "fileFormat": "",// Jenis file teks.
                "object":[]// Awalan objek.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":""// Jumlah catatan error yang diizinkan.
        },
        "speed":{
            "throttle":true,// Menentukan apakah Pembatasan laju diaktifkan. Jika parameter ini diatur ke false, parameter mbps akan diabaikan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Laju transfer maksimum dalam MB/s. Catatan: Dalam konteks ini, 1 mbps sama dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai Default

datasource

Nama sumber data. Dalam Script Mode, nilai parameter ini harus sesuai dengan nama sumber data yang Anda tambahkan.

Ya

Tidak ada

object

Object S3 atau Objects yang akan dibaca. Anda dapat menentukan beberapa Object. Misalnya, jika sebuah bucket berisi folder bernama `test` dengan file bernama ll.txt, atur nilai object menjadi test/ll.txt.

  • Ketika Anda menentukan satu Object S3, Reader Amazon S3 menggunakan satu thread untuk mengekstraksi data.

  • Ketika Anda menentukan beberapa Object S3, Reader Amazon S3 menggunakan beberapa thread untuk mengekstraksi data. Jumlah thread konkuren ditentukan oleh parameter concurrent.

  • Ketika Anda menggunakan wildcard, Reader Amazon S3 mencoba menemukan dan menelusuri beberapa Object. Misalnya, `abc*[0-9]` cocok dengan `abc0`, `abc1`, `abc2`, dan `abc3`. Kami tidak menyarankan penggunaan wildcard karena dapat menyebabkan error overflow memori.

Catatan
  • Sistem sinkronisasi data memperlakukan semua Object dalam satu job sebagai satu tabel data. Anda harus memastikan bahwa semua Object memiliki skema yang sama.

  • Batasi jumlah file dalam satu direktori untuk mencegah potensi masalah OutOfMemoryError. Jika Anda mengalami error ini, pisahkan file ke direktori berbeda dan coba lagi.

Ya

Tidak ada

column

Daftar bidang yang akan dibaca. `type` menentukan tipe data di sumber. `index` menentukan posisi kolom (dimulai dari 0) dalam file teks. `value` menentukan nilai konstan untuk kolom tersebut. Nilai ini dihasilkan secara otomatis, bukan dibaca dari file sumber.

Secara default, Anda dapat membaca semua data sebagai tipe string. Konfigurasinya sebagai berikut:

"column": ["*"]

Anda juga dapat menentukan informasi kolom secara detail. Konfigurasinya sebagai berikut:

"column":    
{       
"type": "long",       
"index": 0 // Membaca integer dari kolom pertama file teks S3.
},    
{       
"type": "string",       
"value": "alibaba" // Menghasilkan string konstan "alibaba" sebagai nilai kolom ini.
}
Catatan

Ketika Anda menentukan informasi column, parameter `type` wajib diisi. Anda harus menentukan salah satu dari `index` atau `value`.

Ya

Semua kolom dibaca sebagai tipe STRING.

fieldDelimiter

Pemisah yang digunakan untuk memisahkan bidang.

Catatan

Anda harus menentukan pemisah bidang untuk Reader Amazon S3. Jika pemisah bidang tidak ditentukan, koma (,) digunakan sebagai default. Nilai default ini juga telah diisi sebelumnya di UI.

Jika pemisah bukan karakter yang terlihat, gunakan representasi Unicode-nya. Misalnya, Anda dapat menggunakan \u001b atau \u007c.

Ya

, (koma)

compress

Jenis kompresi teks. Secara default, parameter ini kosong, yang menunjukkan tidak ada kompresi yang digunakan. Jenis kompresi berikut didukung: gzip, bzip2, dan zip.

Tidak

Tidak ada

encoding

Format encoding file sumber.

Tidak

UTF-8

nullFormat

File teks tidak dapat menggunakan string standar untuk merepresentasikan nilai null. Anda dapat menggunakan parameter nullFormat untuk menentukan string yang merepresentasikan nilai null. Misalnya, jika Anda mengatur nullFormat="null", data sumber "null" dianggap sebagai bidang null.

Tidak

Tidak ada

skipHeader

Untuk file mirip CSV, Anda dapat menggunakan parameter skipHeader untuk menentukan apakah baris header dilewati.

  • true: Baris header dilewati selama sinkronisasi data.

  • false: Baris header dibaca sebagai baris data selama sinkronisasi data.

Catatan

Anda tidak dapat menggunakan parameter skipHeader untuk file terkompresi.

Tidak

false

csvReaderConfig

Pengaturan lanjutan untuk membaca file CSV. Parameter ini bertipe map. Jika tidak dikonfigurasi, pengaturan default CsvReader akan digunakan.

Tidak

Tidak ada

Contoh skrip Writer

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "s3",
            "category": "writer",
            "name": "Writer",
            "parameter": {
                "datasource": "datasource1",
                "object": "test/csv_file.csv",
                "fileFormat": "csv",
                "encoding": "utf8/gbk/...",
                "fieldDelimiter": ",",
                "lineDelimiter": "\n",
                "column": [
                    "0",
                    "1"
                ],
                "header": [
                    "col_bigint",
                    "col_tinyint"
                ],
                "writeMode": "truncate",
                "writeSingleObject": true
            }
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "" // Jumlah catatan error yang diizinkan.
        },
        "speed": {
            "throttle": true, // Menentukan apakah Pembatasan laju diaktifkan. Jika parameter ini diatur ke false, parameter mbps akan diabaikan.
            "concurrent": 1, // Jumlah pekerjaan konkuren.
            "mbps": "12" // Laju transfer maksimum dalam MB/s. Catatan: Dalam konteks ini, 1 mbps sama dengan 1 MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai Default

datasource

Nama sumber data. Dalam Script Mode, nilai parameter ini harus sama dengan nama sumber data yang Anda tambahkan.

Ya

Tidak ada

object

Nama objek tujuan.

Ya

Tidak ada

fileFormat

Format file. Format berikut didukung:

  • csv: Hanya format CSV standar yang didukung. Jika data yang akan ditulis berisi pemisah kolom, writer melakukan escape data dengan tanda kutip ganda (").

  • text: format teks sederhana di mana kolom dipisahkan oleh pemisah yang ditentukan. Writer tidak menggunakan karakter escape jika data berisi pemisah tersebut.

  • PARQUET

  • ORC

Ya

text

writeMode

  • truncate: Sebelum menulis data, sistem menghapus semua Object yang ada dengan awalan objek yang ditentukan. Misalnya, jika Anda mengatur "object":"abc", writer menghapus semua Object yang namanya dimulai dengan `abc`.

  • append: Sebelum menulis data, sistem tidak memproses data yang sudah ada. Writer S3 langsung menulis data ke Object yang ditentukan dan menambahkan sufiks UUID acak untuk memastikan nama file unik. Misalnya, jika Anda menentukan `dataintegration` sebagai nama Object, nama file aktualnya mirip dengan `DI_xxxx_xxxx_xxxx`.

  • nonConflict: Jika Object dengan awalan yang cocok sudah ada di path yang ditentukan, job gagal dan menghasilkan error. Misalnya, jika Anda mengatur "object":"abc" dan Object bernama `abc123` sudah ada, job gagal.

Ya

append

fieldDelimiter

Pemisah yang digunakan untuk memisahkan bidang dalam file output.

Tidak

, (koma)

lineDelimiter

Pemisah yang digunakan untuk memisahkan baris dalam file output.

Tidak

\n (karakter baris baru)

compress

Jenis kompresi teks. Secara default, parameter ini kosong, yang menunjukkan tidak ada kompresi yang digunakan.

  • Jika Anda mengatur `fileFormat` ke `text` atau `csv`, GZIP dan BZIP2 didukung.

  • Jika Anda mengatur `fileFormat` ke `PARQUET` atau `ORC`, Anda dapat menggunakan kompresi `SNAPPY`.

Tidak

Tidak ada

nullFormat

File teks tidak dapat menggunakan string standar untuk merepresentasikan nilai null. Anda dapat menggunakan parameter nullFormat untuk menentukan string yang merepresentasikan nilai null. Misalnya, jika Anda mengatur nullFormat="null" dan data sumber bernilai null, sistem menulis string "null" ke file.

Tidak

Tidak ada

header

Baris header yang akan ditulis ke file. Contoh: ["id", "name", "age"].

Tidak

Tidak ada

writeSingleObject

Menentukan apakah data ditulis ke satu file. Nilai yang valid: `true` dan `false`.

Catatan
  • Ketika Anda menulis data dalam format ORC atau PARQUET, parameter `writeSingleObject` tidak berlaku. Bahkan jika Anda menggunakan parameter ini, Anda tidak dapat menulis data ke satu file ORC atau PARQUET dalam skenario konkurensi tinggi. Untuk menulis data ke satu file, Anda dapat mengatur jumlah thread konkuren menjadi 1. Namun, writer tetap menambahkan sufiks acak ke nama file. Mengatur jumlah thread konkuren menjadi 1 juga memengaruhi kecepatan sinkronisasi.

  • Dalam beberapa skenario, misalnya ketika sumbernya adalah sumber Hologres, reader membaca data berdasarkan shard. Hal ini dapat menghasilkan beberapa file output meskipun jumlah thread konkuren adalah 1.

Tidak

false

encoding

Format encoding file output.

Tidak

UTF-8

column

Konfigurasi kolom file output.

  • Jika `fileFormat` adalah `csv` atau `text`, `column` dapat dikonfigurasi dengan placeholder numerik. Contoh:

    "column":[
     "0",
     "1"
     ]
  • Jika `fileFormat` adalah `PARQUET` atau `ORC`, Anda harus menentukan `name` dan `type` untuk setiap kolom. Contoh:

    "column": [
      {
        "name": "col1",
        "type": "BIGINT"
      },
      {
        "name": "col2",
        "type": "DOUBLE"
      }
    ]

Ya

Tidak ada