Template Langganan Pub/Sub ke BigQuery

Template Langganan Pub/Sub ke BigQuery adalah pipeline streaming yang membaca pesan berformat JSON dari langganan Pub/Sub dan menulisnya 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.

Persyaratan pipeline

  • Bidang 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 sudah 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 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...*/ }, nama fungsinya adalah myTransform. Untuk contoh UDF JavaScript, lihat Contoh UDF (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
  • javascriptTextTransformReloadIntervalMinutes : Menentukan interval yang dapat digunakan pekerja untuk memeriksa perubahan UDF JavaScript guna memuat ulang file. Setelan defaultnya adalah: 0.

Fungsi yang ditentukan pengguna (UDF)

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 informasi selengkapnya, lihat Membuat fungsi yang ditentukan pengguna untuk template Dataflow.

Spesifikasi fungsi

UDF memiliki spesifikasi berikut:

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

    Konsol

    1. Buka halaman Create job from template Dataflow.
    2. Buka Buat 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 defaultnya adalah us-central1.

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

    5. Dari menu drop-down Dataflow template, 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 sekali, pilih Minimal Sekali.
    8. Klik Run job.

    gcloud

    Di shell atau terminal, 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 melakukan staging 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 POST HTTP. 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 project Google Cloud 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 melakukan staging 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 selanjutnya