Template Langganan Pub/Sub ke BigQuery

Template Pub/Sub Subscription to BigQuery adalah pipeline streaming yang membaca pesan berformat JSON dari langganan Pub/Sub dan menuliskannya ke tabel BigQuery. Anda dapat menggunakan template ini sebagai solusi cepat untuk memindahkan data Pub/Sub ke BigQuery. Template ini membaca pesan berformat JSON dari Pub/Sub dan mengonversinya menjadi elemen BigQuery.

Sebelum menjalankan pipeline Dataflow untuk skenario ini, pertimbangkan apakah langganan Pub/Sub BigQuery dengan UDF memenuhi persyaratan Anda.

Persyaratan pipeline

  • Kolom data pesan Pub/Sub harus menggunakan format JSON, yang dijelaskan dalam panduan JSON ini. Misalnya, pesan dengan nilai di kolom data yang diformat sebagai {"k1":"v1", "k2":"v2"} dapat dimasukkan ke tabel BigQuery dengan dua kolom, bernama k1 dan k2, dengan jenis data string.
  • Tabel output harus ada sebelum menjalankan pipeline. Skema tabel harus cocok dengan objek JSON input.

Parameter template

Parameter yang diperlukan

  • outputTableSpec: Lokasi tabel output BigQuery, dalam format <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.
  • inputSubscription: Langganan input Pub/Sub yang akan dibaca, dalam format projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION>.

Parameter opsional

  • outputDeadletterTable: Tabel BigQuery yang akan digunakan untuk pesan yang gagal mencapai tabel output, dalam format <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>. Jika tidak ada, tabel akan dibuat selama eksekusi pipeline. Jika tidak ditentukan, OUTPUT_TABLE_SPEC_error_records akan digunakan.
  • javascriptTextTransformGcsPath: URI Cloud Storage dari file .js yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang akan digunakan. Contoh, gs://my-bucket/my-udfs/my_file.js.
  • javascriptTextTransformFunctionName: Nama fungsi yang ditentukan pengguna (UDF) JavaScript yang akan digunakan. Misalnya, jika kode fungsi JavaScript Anda adalah myTransform(inJson) { /*...do stuff...*/ }, maka nama fungsinya adalah myTransform. Untuk contoh UDF JavaScript, lihat Contoh UDF (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
  • javascriptTextTransformReloadIntervalMinutes: Menentukan interval saat pekerja dapat memeriksa perubahan UDF JavaScript untuk memuat ulang file. Nilai default: 0.

Fungsi yang ditentukan pengguna

Secara opsional, Anda dapat memperluas template ini dengan menulis fungsi yang ditentukan pengguna (UDF). Template memanggil UDF untuk setiap elemen input. Payload elemen diserialisasi sebagai string JSON. Untuk mengetahui informasi selengkapnya, lihat Membuat fungsi yang ditentukan pengguna untuk template Dataflow.

Spesifikasi fungsi

UDF memiliki spesifikasi berikut:

  • Input: kolom data pesan Pub/Sub, diserialisasi sebagai string JSON.
  • Output: string JSON yang cocok dengan skema tabel tujuan BigQuery.
  • Menjalankan template

    Konsol

    1. Buka halaman Dataflow Create job from template.
    2. Buka Membuat tugas dari template
    3. Di kolom Nama tugas, masukkan nama tugas yang unik.
    4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

      Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

    5. Dari menu drop-down Template Dataflow, pilih the Pub/Sub Subscription to BigQuery template.
    6. Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
    7. Opsional: Untuk beralih dari pemrosesan tepat satu kali ke mode streaming minimal satu kali, pilih Minimal Satu Kali.
    8. 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/PubSub_Subscription_to_BigQuery \
        --region REGION_NAME \
        --staging-location STAGING_LOCATION \
        --parameters \
    inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME,\
    outputTableSpec=PROJECT_ID:DATASET.TABLE_NAME,\
    outputDeadletterTable=PROJECT_ID:DATASET.TABLE_NAME

    Ganti kode berikut:

    • JOB_NAME: nama tugas unik pilihan Anda
    • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
    • VERSION: versi template yang ingin Anda gunakan

      Anda dapat menggunakan nilai berikut:

    • STAGING_LOCATION: lokasi untuk menyiapkan file lokal (misalnya, gs://your-bucket/staging)
    • SUBSCRIPTION_NAME: nama langganan Pub/Sub Anda
    • DATASET: set data BigQuery Anda
    • TABLE_NAME: nama tabel BigQuery Anda

    API

    Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk mengetahui 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/PubSub_Subscription_to_BigQuery
    {
       "jobName": "JOB_NAME",
       "parameters": {
           "inputSubscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME",
           "outputTableSpec": "PROJECT_ID:DATASET.TABLE_NAME"
       },
       "environment": {
           "ipConfiguration": "WORKER_IP_UNSPECIFIED",
           "additionalExperiments": []
       },
    }

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project tempat Anda ingin menjalankan tugas Dataflow
    • JOB_NAME: nama tugas unik pilihan Anda
    • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
    • VERSION: versi template yang ingin Anda gunakan

      Anda dapat menggunakan nilai berikut:

    • STAGING_LOCATION: lokasi untuk menyiapkan file lokal (misalnya, gs://your-bucket/staging)
    • SUBSCRIPTION_NAME: nama langganan Pub/Sub Anda
    • DATASET: set data BigQuery Anda
    • TABLE_NAME: nama tabel BigQuery Anda

    Langkah berikutnya