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 waktu updated 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 waktu updated lebih besar daripada proses transfer terakhir yang berhasil (2023-07-01T03:00Z). Kali ini, proses transfer selesai tanpa masalah, sehingga berhasil memuat file_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 file s3://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 memperluas 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, pertama-tama Anda harus menguji transfer 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 selanjutnya