Template Cloud Storage Text to Spanner adalah pipeline batch yang membaca file teks CSV dari Cloud Storage dan mengimpornya ke database Spanner.
Persyaratan pipeline
- Database dan tabel Spanner target harus ada.
- Anda harus memiliki izin baca untuk bucket Cloud Storage dan izin tulis untuk database Spanner target.
- Jalur Cloud Storage input yang berisi file CSV harus ada.
- Anda harus membuat file manifes impor yang berisi deskripsi JSON dari file CSV, dan Anda harus menyimpan file manifes tersebut di Cloud Storage.
- Jika database Spanner target sudah memiliki skema, setiap kolom yang ditentukan dalam file manifes harus memiliki jenis data yang sama dengan kolom terkait dalam skema database target.
-
File manifes, yang dienkode dalam ASCII atau UTF-8, harus cocok dengan format berikut:
- File teks yang akan diimpor harus dalam format CSV, dengan encoding ASCII atau UTF-8. Sebaiknya jangan gunakan tanda urutan byte (BOM) dalam file berenkode UTF-8.
- Data harus cocok dengan salah satu jenis berikut:
GoogleSQL
BOOL INT64 FLOAT64 NUMERIC STRING DATE TIMESTAMP BYTES JSON
PostgreSQL
boolean bigint double precision numeric character varying, text date timestamp with time zone bytea
Parameter template
Parameter | Deskripsi |
---|---|
instanceId |
ID instance database Spanner. |
databaseId |
ID database dari database Spanner. |
importManifest |
Jalur di Cloud Storage ke file manifes impor. |
columnDelimiter |
Pemisah kolom yang digunakan file sumber. Nilai defaultnya adalah , . |
fieldQualifier |
Karakter yang harus mengapit nilai apa pun dalam file sumber yang berisi
columnDelimiter . Nilai defaultnya adalah " .
|
trailingDelimiter |
Menentukan apakah baris dalam file sumber memiliki pemisah di akhir (yaitu, jika karakter columnDelimiter muncul di akhir setiap baris, setelah nilai kolom terakhir). Nilai defaultnya adalah true . |
escape |
Karakter escape yang digunakan file sumber. Secara default, parameter ini tidak ditetapkan dan template tidak menggunakan karakter escape. |
nullString |
String yang mewakili nilai NULL . Secara default, parameter ini tidak ditetapkan
dan template tidak menggunakan string null. |
dateFormat |
Format yang digunakan untuk mengurai kolom tanggal. Secara default, pipeline akan mencoba mengurai kolom
tanggal sebagai yyyy-M-d[' 00:00:00'] , misalnya, 31-01-2019 atau 1-1-2019 00:00:00.
Jika format tanggal Anda berbeda, tentukan format tersebut menggunakan pola
java.time.format.DateTimeFormatter . |
timestampFormat |
Format yang digunakan untuk mengurai kolom stempel waktu. Jika stempel waktu berupa bilangan bulat panjang, stempel waktu tersebut akan diuraikan sebagai waktu Unix epoch. Jika tidak, string tersebut akan diuraikan sebagai string menggunakan format java.time.format.DateTimeFormatter.ISO_INSTANT . Untuk kasus lainnya, tentukan string pola Anda sendiri, misalnya menggunakan MMM dd yyyy HH:mm:ss.SSSVV untuk stempel waktu dalam bentuk "Jan 21 1998 01:02:03.456+08:00" . |
spannerProjectId |
(Opsional) Project ID Google Cloud dari database Spanner. Jika tidak disetel, project Google Cloud default akan digunakan. |
spannerPriority |
(Opsional)
Prioritas permintaan
untuk panggilan Spanner. Nilai yang mungkin adalah HIGH ,
MEDIUM , LOW . Nilai defaultnya adalah
MEDIUM . |
handleNewLine |
(Opsional) Jika true , data input dapat berisi karakter baris baru. Jika tidak, karakter baris baru akan menyebabkan error. Nilai default-nya
adalah false . Mengaktifkan penanganan baris baru dapat mengurangi performa. |
invalidOutputPath |
(Opsional) Jalur Cloud Storage untuk menulis baris yang tidak dapat diimpor. |
Jika Anda perlu menggunakan format tanggal atau stempel waktu yang disesuaikan, pastikan format tersebut adalah pola
java.time.format.DateTimeFormatter
yang valid. Tabel berikut menunjukkan contoh tambahan dari format yang disesuaikan untuk kolom tanggal dan stempel waktu:
Jenis | Nilai input | Format | Keterangan |
---|---|---|---|
DATE |
2011-3-31 | Secara default, template dapat mengurai format ini.
Anda tidak perlu menentukan parameter dateFormat . |
|
DATE |
31-3-2011 00:00:00 | Secara default, template dapat mengurai format ini.
Anda tidak perlu menentukan format. Jika mau, Anda dapat menggunakan
yyyy-M-d' 00:00:00' . |
|
DATE |
01 Apr, 18 | dd MMM, yy | |
DATE |
Rabu, 3 April 2019 M | EEEE, LLLL d, tttt G | |
TIMESTAMP |
02-01-2019T11:22:33Z 2019-01-02T11:22:33.123Z 2019-01-02T11:22:33.12356789Z |
Format default ISO_INSTANT dapat mengurai jenis stempel waktu ini.
Anda tidak perlu memberikan parameter timestampFormat . |
|
TIMESTAMP |
1568402363 | Secara default, template dapat mengurai jenis stempel waktu ini dan memperlakukannya sebagai waktu epoch Unix. | |
TIMESTAMP |
Sel, 3 Jun 2008 11.05.30 GMT | EEE, d MMM yyyy HH:mm:ss VV | |
TIMESTAMP |
31/12/2018 110530.123PST | tttt/BB/dd HHmmss.SSSz | |
TIMESTAMP |
2019-01-02T11:22:33Z atau 2019-01-02T11:22:33.123Z | yyyy-MM-dd'T'HH:mm:ss[.SSS]VV | Jika kolom input adalah campuran dari 2019-01-02T11:22:33Z dan 2019-01-02T11:22:33.123Z, format default dapat mengurai jenis stempel waktu ini. Anda tidak perlu memberikan parameter format sendiri.
Anda dapat menggunakan yyyy-MM-dd'T'HH:mm:ss[.SSS]VV untuk menangani kedua
kasus tersebut. Anda tidak dapat menggunakan yyyy-MM-dd'T'HH:mm:ss[.SSS]'Z' , karena postfix 'Z' harus diuraikan sebagai ID zona waktu, bukan literal karakter. Secara internal, kolom stempel waktu dikonversi menjadi
java.time.Instant .
Oleh karena itu, waktu harus ditentukan dalam UTC atau memiliki informasi zona waktu yang terkait dengannya.
Tanggal dan waktu lokal, seperti 02-01-2019 11:22:33, tidak dapat diuraikan sebagai java.time.Instant yang valid.
|
Menjalankan template
Konsol
- Buka halaman Create job from template Dataflow. Buka Buat tugas dari template
- Di kolom Job name, masukkan nama pekerjaan yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region
default-nya adalah
us-central1
.Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Dataflow template, pilih the Text Files on Cloud Storage to Cloud Spanner template.
- Di kolom parameter yang disediakan, masukkan parameter value Anda.
- Klik Run job.
gcloud
Di shell atau terminal Anda, jalankan template:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_Text_to_Cloud_Spanner \ --region REGION_NAME \ --parameters \ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ importManifest=GCS_PATH_TO_IMPORT_MANIFEST
Ganti kode berikut:
JOB_NAME
: nama pekerjaan unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
REGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
INSTANCE_ID
: ID instance Spanner AndaDATABASE_ID
: ID database Spanner AndaGCS_PATH_TO_IMPORT_MANIFEST
: jalur Cloud Storage ke file manifes impor Anda
API
Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_Text_to_Cloud_Spanner { "jobName": "JOB_NAME", "parameters": { "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "importManifest": "GCS_PATH_TO_IMPORT_MANIFEST" }, "environment": { "machineType": "n1-standard-2" } }
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama pekerjaan unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
LOCATION
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
INSTANCE_ID
: ID instance Spanner AndaDATABASE_ID
: ID database Spanner AndaGCS_PATH_TO_IMPORT_MANIFEST
: jalur Cloud Storage ke file manifes impor Anda
Langkah selanjutnya
- Pelajari Template Dataflow.
- Lihat daftar template yang disediakan Google.