Pengantar transfer Amazon S3
BigQuery Data Transfer Service untuk Amazon S3 memungkinkan Anda menjadwalkan dan mengelola tugas pemuatan berulang secara otomatis dari Amazon S3 ke BigQuery.
Format file yang didukung
BigQuery Data Transfer Service mendukung pemuatan data dari Amazon S3 dalam salah satu format berikut:
- Nilai yang dipisahkan koma (CSV)
- JSON (dibatasi newline)
- Avro
- Parquet
- ORC
Jenis kompresi yang didukung
BigQuery Data Transfer Service untuk Amazon S3 mendukung data pemuatan terkompresi. Jenis kompresi yang didukung oleh BigQuery Data Transfer Service sama dengan jenis kompresi yang didukung oleh tugas pemuatan BigQuery. Untuk informasi selengkapnya, lihat Memuat data terkompresi dan tidak dikompresi.
Prasyarat Amazon S3
Untuk memuat data dari sumber data Amazon S3, Anda harus:
- Memasukkan URI Amazon S3 untuk data sumber Anda
- Memiliki ID kunci akses
- Memiliki kunci akses rahasia
- Tetapkan, setidaknya, kebijakan yang dikelola AWS
AmazonS3ReadOnlyAccess
pada data sumber Amazon S3 Anda
URI Amazon S3
Saat Anda menyediakan URI Amazon S3, jalurnya harus dalam format berikut
s3://bucket/folder1/folder2/...
Hanya nama bucket level atas yang diperlukan.
Nama folder bersifat opsional. Jika Anda menentukan URI yang hanya menyertakan nama
bucket, semua file dalam bucket akan ditransfer dan dimuat ke
BigQuery.
Parameterisasi runtime transfer Amazon S3
Tabel tujuan dan URI Amazon S3 dapat diparameterisasi, sehingga Anda dapat memuat data dari bucket Amazon S3 yang diatur berdasarkan tanggal. Perhatikan bahwa bagian bucket URI tidak dapat diparameterisasi. Parameter yang digunakan transfer Amazon S3 sama dengan parameter yang digunakan transfer Cloud Storage.
Untuk mengetahui detailnya, lihat Parameter runtime dalam transfer.
Penyerapan data untuk transfer Amazon S3
Anda dapat menentukan cara data dimuat ke BigQuery dengan memilih Write Preference dalam konfigurasi transfer saat Anda menyiapkan transfer Amazon S3.
Ada dua jenis preferensi tulis yang tersedia, transfer inkremental dan transfer terpotong.Transfer inkremental
Konfigurasi transfer dengan preferensi tulis APPEND
atau WRITE_APPEND
,
yang juga disebut transfer inkremental, secara bertahap menambahkan data baru
setelah transfer sebelumnya yang berhasil ke tabel tujuan
BigQuery. Saat konfigurasi transfer berjalan dengan preferensi tulis APPEND
,
BigQuery Data Transfer Service
akan memfilter file yang telah diubah setelah
proses transfer sebelumnya yang berhasil. Untuk menentukan kapan file diubah, BigQuery Data Transfer Service akan mencari properti "waktu terakhir diubah"
dalam metadata file. Misalnya, BigQuery Data Transfer Service melihat properti stempel waktu updated
dalam file Cloud Storage. Jika
BigQuery Data Transfer Service menemukan file dengan "waktu terakhir diubah" yang muncul
setelah stempel waktu transfer terakhir yang berhasil,
BigQuery Data Transfer Service akan mentransfer file tersebut dalam transfer inkremental.
Untuk mendemonstrasikan cara kerja transfer inkremental, perhatikan contoh transfer
Cloud Storage berikut. Pengguna membuat file dalam
bucket Cloud Storage pada waktu 2023-07-01T00:00Z bernama file_1
. Stempel waktu
updated
untuk file_1
adalah
waktu file dibuat. Pengguna kemudian
membuat transfer inkremental dari bucket Cloud Storage,
yang dijadwalkan untuk dijalankan satu kali setiap hari pada pukul 03.00Z, mulai dari 2023-07-01T03:00Z.
- Pada 2023-07-01T03:00Z, proses transfer pertama dimulai. Karena ini adalah transfer pertama
yang dijalankan untuk konfigurasi ini, BigQuery Data Transfer Service mencoba
memuat semua file yang cocok dengan URI sumber ke dalam tabel
BigQuery tujuan. Proses transfer berhasil dan
BigQuery Data Transfer Service berhasil memuat
file_1
ke tabel BigQuery tujuan. - Proses transfer berikutnya, pada 2023-07-02T03:00Z, tidak mendeteksi file dengan
properti stempel waktu
updated
lebih besar daripada proses transfer terakhir yang berhasil (2023-07-01T03:00Z). Proses transfer berhasil tanpa memuat data tambahan ke tabel BigQuery tujuan.
Contoh sebelumnya menunjukkan cara BigQuery Data Transfer Service melihat
properti stempel waktu updated
dari file sumber untuk menentukan apakah ada perubahan
yang dilakukan pada file sumber, dan untuk mentransfer perubahan tersebut jika ada yang terdeteksi.
Dengan mengikuti contoh yang sama, misalkan pengguna kemudian membuat file lain di
bucket Cloud Storage pada 2023-07-03T00:00Z, bernama file_2
. Stempel waktu
updated
untuk file_2
adalah
waktu file dibuat.
- Proses transfer berikutnya, pada 2023-07-03T03:00Z, mendeteksi bahwa
file_2
memiliki stempel waktuupdated
lebih besar daripada proses transfer terakhir yang berhasil (2023-07-01T03:00Z). Misalkan saat proses transfer dimulai, transfer tersebut gagal karena error sementara. Dalam skenario ini,file_2
tidak dimuat ke dalam tabel BigQuery tujuan. Stempel waktu dari proses transfer terakhir yang berhasil tetap berada pada 2023-07-01T03:00Z. - Proses transfer berikutnya, pada 2023-07-04T03:00Z, mendeteksi bahwa
file_2
memiliki stempel waktuupdated
lebih besar daripada proses transfer terakhir yang berhasil (2023-07-01T03:00Z). Kali ini, proses transfer selesai tanpa masalah, sehingga berhasil memuatfile_2
ke tabel BigQuery tujuan. - Proses transfer berikutnya, pada 2023-07-05T03:00Z, tidak mendeteksi file dengan
stempel waktu
updated
lebih besar dari proses transfer terakhir yang berhasil (2023-07-04T03:00Z). Proses transfer berhasil tanpa memuat data tambahan ke tabel BigQuery tujuan.
Contoh sebelumnya menunjukkan bahwa saat transfer gagal, tidak ada file yang ditransfer ke tabel tujuan BigQuery. Setiap perubahan file akan ditransfer pada proses transfer berikutnya yang berhasil. Setiap transfer yang berhasil setelah transfer yang gagal tidak akan menyebabkan data duplikat. Jika transfer gagal, Anda juga dapat memilih untuk memicu transfer secara manual di luar waktu yang dijadwalkan secara berkala.
Transfer terpotong
Konfigurasi transfer dengan preferensi tulis MIRROR
atau WRITE_TRUNCATE
,
yang juga disebut transfer terpotong, akan menimpa data di
tabel tujuan BigQuery selama setiap proses transfer dengan data
dari semua file yang cocok dengan URI sumber. MIRROR
menimpa salinan baru
data di tabel tujuan. Jika tabel tujuan menggunakan dekorator
partisi, proses transfer hanya akan menimpa data di partisi yang ditentukan. Tabel
tujuan dengan dekorator partisi memiliki format
my_table${run_date}
—misalnya, my_table$20230809
.
Mengulangi transfer inkremental atau transfer terpotong yang sama dalam satu hari tidak akan menyebabkan data duplikat. Namun, jika Anda menjalankan beberapa konfigurasi transfer berbeda yang memengaruhi tabel tujuan BigQuery yang sama, hal ini dapat menyebabkan BigQuery Data Transfer Service menduplikasi data.
Dukungan karakter pengganti untuk URI Amazon S3
Jika data sumber dipisahkan menjadi beberapa file yang memiliki nama dasar yang sama, Anda dapat menggunakan karakter pengganti di URI saat memuat data. Karakter pengganti terdiri dari tanda bintang (*), dan dapat digunakan di mana saja dalam URI Amazon S3, kecuali untuk nama bucket.
Meskipun lebih dari satu karakter pengganti dapat digunakan dalam URI Amazon S3, beberapa pengoptimalan dapat dilakukan jika URI Amazon S3 hanya menentukan satu karakter pengganti:
Ada batas yang lebih tinggi untuk jumlah maksimum file per proses transfer.
Karakter pengganti akan menjangkau batas direktori. Misalnya,
s3://my-bucket/*.csv
URI Amazon S3 akan cocok dengan files3://my-bucket/my-folder/my-subfolder/my-file.csv
.
Contoh URI Amazon S3
Contoh 1
Untuk memuat satu file dari Amazon S3 ke BigQuery, tentukan URI Amazon S3 dari file tersebut.
s3://my-bucket/my-folder/my-file.csv
Contoh 2
Untuk memuat semua file dari bucket Amazon S3 ke BigQuery, tentukan nama bucket saja, dengan atau tanpa karakter pengganti.
s3://my-bucket/
atau
s3://my-bucket/*
Perlu diperhatikan bahwa s3://my-bucket*
bukan URI Amazon S3 yang diizinkan, karena karakter pengganti
tidak dapat digunakan dalam nama bucket.
Contoh 3
Untuk memuat semua file dari Amazon S3 yang memiliki awalan umum yang sama, tentukan awalan umum yang diikuti dengan karakter pengganti.
s3://my-bucket/my-folder/*
Perlu diketahui bahwa, berbeda dengan memuat semua file dari bucket Amazon S3 level atas, karakter pengganti harus ditentukan di akhir URI Amazon S3 untuk setiap file yang akan dimuat.
Contoh 4
Untuk memuat semua file dari Amazon S3 dengan jalur yang serupa, tentukan awalan umum yang diikuti dengan karakter pengganti.
s3://my-bucket/my-folder/*.csv
Contoh 5
Perhatikan direktori span karakter pengganti, sehingga semua file csv
di my-folder
, serta
di subfolder my-folder
, akan dimuat ke BigQuery.
Jika Anda memiliki file sumber ini dalam folder logs
:
s3://my-bucket/logs/logs.csv
s3://my-bucket/logs/system/logs.csv
s3://my-bucket/logs/some-application/system_logs.log
s3://my-bucket/logs/logs_2019_12_12.csv
maka hal berikut ini mengidentifikasinya:
s3://my-bucket/logs/*
Contoh 6
Jika Anda memiliki file sumber ini, tetapi hanya ingin mentransfer file yang memiliki
logs.csv
sebagai nama file:
s3://my-bucket/logs.csv
s3://my-bucket/metadata.csv
s3://my-bucket/system/logs.csv
s3://my-bucket/system/users.csv
s3://my-bucket/some-application/logs.csv
s3://my-bucket/some-application/output.csv
kode berikut mengidentifikasi file dengan logs.csv
dalam namanya:
s3://my-bucket/*logs.csv
Contoh 7
Dengan menggunakan beberapa karakter pengganti, Anda dapat memiliki lebih banyak kontrol atas file yang ditransfer, dengan mengorbankan batas bawah. Menggunakan beberapa karakter pengganti berarti setiap karakter pengganti hanya akan cocok dengan akhir jalur dalam subdirektori. Misalnya, untuk file sumber berikut di Amazon S3:
s3://my-bucket/my-folder1/my-file1.csv
s3://my-bucket/my-other-folder2/my-file2.csv
s3://my-bucket/my-folder1/my-subfolder/my-file3.csv
s3://my-bucket/my-other-folder2/my-subfolder/my-file4.csv
Jika tujuannya hanya mentransfer my-file1.csv
dan my-file2.csv
, gunakan
hal berikut sebagai nilai untuk URI Amazon S3:
s3://my-bucket/*/*.csv
Karena tidak ada karakter pengganti yang mencakup direktori, URI ini akan membatasi transfer hanya ke
file CSV yang ada di my-folder1
dan my-other-folder2
. Subfolder tidak akan
disertakan dalam transfer.
Kunci akses AWS
ID kunci akses dan kunci akses rahasia digunakan untuk mengakses data Amazon S3 atas nama Anda. Sebagai praktik terbaik, buat ID kunci akses unik dan kunci akses rahasia khusus untuk transfer Amazon S3 guna memberikan akses minimal ke BigQuery Data Transfer Service. Untuk mengetahui informasi tentang cara mengelola kunci akses, lihat dokumentasi referensi umum AWS.
Pertimbangan konsistensi
Saat mentransfer data dari Amazon S3, beberapa data mungkin tidak akan ditransfer ke BigQuery, terutama jika file baru saja ditambahkan ke bucket. Perlu waktu sekitar 10 menit agar file tersedia di BigQuery Data Transfer Service setelah ditambahkan ke bucket. Namun, terkadang perlu waktu lebih dari 10 menit.
Untuk informasi selengkapnya tentang model konsistensi Amazon S3, lihat model konsistensi data Amazon S3 dalam dokumentasi Amazon S3.
Praktik terbaik biaya transfer data keluar
Transfer dari Amazon S3 dapat gagal jika tabel tujuan belum dikonfigurasi dengan benar. Alasan yang dapat menyebabkan konfigurasi yang tidak tepat meliputi:
- Tabel tujuan tidak ada.
- Skema tabel tidak ditetapkan.
- Skema tabel tidak kompatibel dengan data yang ditransfer.
Untuk menghindari biaya transfer data keluar Amazon S3, Anda harus menguji transfer terlebih dahulu dengan subset file yang kecil tetapi representatif. Kecil berarti pengujian harus memiliki ukuran data yang kecil, dan jumlah file yang kecil.
Harga
Untuk mengetahui informasi tentang harga BigQuery Data Transfer Service, lihat halaman Harga.
Perhatikan bahwa biaya dapat dikenakan di luar Google dengan menggunakan layanan ini. Silakan lihat halaman harga Amazon S3 untuk mengetahui detailnya.
Kuota dan batas
BigQuery Data Transfer Service menggunakan tugas pemuatan untuk memuat data Amazon S3 ke BigQuery. Semua Kuota dan batas BigQuery pada tugas pemuatan berlaku untuk transfer Amazon S3 berulang, dengan pertimbangan tambahan berikut:
Nilai | Batas |
---|---|
Ukuran maksimum per proses transfer tugas pemuatan | 15 TB |
Jumlah file maksimum per proses transfer jika URI Amazon S3 menyertakan 0 atau 1 karakter pengganti | 10.000.000 file |
Jumlah file maksimum per proses transfer jika URI Amazon S3 menyertakan lebih dari 1 karakter pengganti | 10.000 file |
Langkah berikutnya
- Pelajari cara menyiapkan transfer Amazon S3.
- Pelajari parameter runtime dalam transfer S3.
- Pelajari BigQuery Data Transfer Service lebih lanjut.