Template Spanner ke Cloud Storage Avro

Spanner ke Avro Files pada template Cloud Storage adalah pipeline batch yang mengekspor seluruh database Spanner ke Cloud Storage dalam format Avro. Mengekspor database Spanner akan membuat folder di bucket yang Anda pilih. Folder tersebut berisi:

  • File spanner-export.json
  • File TableName-manifest.json untuk setiap tabel dalam database yang Anda ekspor.
  • Satu atau beberapa file TableName.avro-#####-of-#####.

Misalnya, mengekspor database dengan dua tabel, Singers dan Albums, akan menghasilkan kumpulan file berikut:

  • Albums-manifest.json
  • Albums.avro-00000-of-00002
  • Albums.avro-00001-of-00002
  • Singers-manifest.json
  • Singers.avro-00000-of-00003
  • Singers.avro-00001-of-00003
  • Singers.avro-00002-of-00003
  • spanner-export.json

Persyaratan pipeline

  • Database Spanner harus ada.
  • Bucket Cloud Storage output harus ada.
  • Selain peran Identity and Access Management (IAM) yang diperlukan untuk menjalankan tugas Dataflow, Anda juga harus memiliki peran IAM yang sesuai untuk membaca data Spanner dan menulis ke bucket Cloud Storage.

Parameter template

Parameter Deskripsi
instanceId ID instance database Spanner yang ingin diekspor.
databaseId ID database dari database Spanner yang ingin diekspor.
outputDir Jalur Cloud Storage tujuan ekspor file Avro. Tugas ekspor akan membuat direktori baru di jalur ini yang berisi file yang diekspor.
snapshotTime (Opsional) Stempel waktu yang sesuai dengan versi database Spanner yang ingin Anda baca. Stempel waktu harus ditentukan sesuai dengan format "Zulu" RFC 3339 UTC. Contoh, 1990-12-31T23:59:60Z. Stempel waktu harus berada di masa lalu dan Penghentian stempel waktu maksimum berlaku.
shouldExportTimestampAsLogicalType (Opsional) Jika true (benar), stempel waktu akan diekspor sebagai jenis long dengan jenis logis timestamp-micros. Secara default, stempel waktu diekspor sebagai string ISO-8601 dengan presisi nanodetik.
tableNames (Opsional) Daftar tabel yang dipisahkan koma yang menentukan subset database Spanner yang akan diekspor. Jika menetapkan parameter ini, Anda harus menyertakan semua tabel terkait (tabel induk dan tabel referensi kunci asing) atau tetapkan parameter shouldExportRelatedTables ke true.
shouldExportRelatedTables (Opsional) Menentukan apakah akan menyertakan tabel terkait atau tidak. Parameter ini digunakan bersama dengan parameter tableNames.
spannerProjectId (Opsional) ID Project Google Cloud dari database Spanner yang datanya ingin Anda baca.
dataBoostEnabled (Opsional) Tetapkan ke true untuk menggunakan resource komputasi Spanner Data Boost guna menjalankan tugas dengan dampak mendekati nol pada alur kerja OLTP Spanner. Tindakan ini memerlukan izin IAM spanner.databases.useDataBoost. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Data Boost.
avroTempDirectory (Opsional) Jalur Cloud Storage tempat file Avro sementara ditulis.
spannerPriority (Opsional) Prioritas permintaan untuk panggilan Spanner. Nilai yang mungkin adalah HIGH, MEDIUM, LOW. Nilai defaultnya adalah MEDIUM.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.

    Agar tugas muncul di halaman Instances Spanner pada Konsol Google Cloud, nama tugas harus cocok dengan format berikut:

    cloud-spanner-export-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    Ganti kode berikut:

    • SPANNER_INSTANCE_ID: ID instance Spanner Anda
    • SPANNER_DATABASE_NAME: nama database Spanner Anda
  4. 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.

  5. Dari menu drop-down Dataflow template, pilih the Cloud Spanner to Avro Files on Cloud Storage template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. 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/Cloud_Spanner_to_GCS_Avro \
    --region REGION_NAME \
    --staging-location GCS_STAGING_LOCATION \
    --parameters \
instanceId=INSTANCE_ID,\
databaseId=DATABASE_ID,\
outputDir=GCS_DIRECTORY

Ganti kode berikut:

  • JOB_NAME: nama pekerjaan unik pilihan Anda

    Agar tugas ditampilkan di bagian Spanner pada Google Cloud Console, nama tugas harus cocok dengan format cloud-spanner-export-INSTANCE_ID-DATABASE_ID.

  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • GCS_STAGING_LOCATION: jalur untuk menulis file sementara; misalnya, gs://mybucket/temp
  • INSTANCE_ID: ID instance Spanner Anda
  • DATABASE_ID: ID database Spanner Anda
  • GCS_DIRECTORY: jalur Cloud Storage tempat file Avro diekspor ke

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/Cloud_Spanner_to_GCS_Avro
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "outputDir": "gs://GCS_DIRECTORY"
   }
}

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda

    Agar tugas ditampilkan di bagian Spanner pada Google Cloud Console, nama tugas harus cocok dengan format cloud-spanner-export-INSTANCE_ID-DATABASE_ID.

  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • GCS_STAGING_LOCATION: jalur untuk menulis file sementara; misalnya, gs://mybucket/temp
  • INSTANCE_ID: ID instance Spanner Anda
  • DATABASE_ID: ID database Spanner Anda
  • GCS_DIRECTORY: jalur Cloud Storage tempat file Avro diekspor ke

Langkah selanjutnya