Langganan Pub/Sub ke template 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 tersebut membaca pesan berformat JSON dari Pub/Sub dan mengonversinya menjadi elemen BigQuery.

Persyaratan pipeline

  • Kolom data dari pesan Pub/Sub harus menggunakan format JSON, yang dijelaskan dalam panduan JSON ini. Misalnya, pesan dengan nilai dalam kolom data yang diformat sebagai {"k1":"v1", "k2":"v2"} dapat disisipkan ke dalam 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 Deskripsi
inputSubscription Langganan input Pub/Sub untuk dibaca, dalam format projects/<project>/subscriptions/<subscription>.
outputTableSpec Lokasi tabel output BigQuery, dalam format <my-project>:<my-dataset>.<my-table>
outputDeadletterTable Tabel BigQuery untuk pesan yang gagal mencapai tabel output, dalam format <my-project>:<my-dataset>.<my-table>. Jika tidak ada, berarti dibuat selama eksekusi pipeline. Jika tidak ditentukan, OUTPUT_TABLE_SPEC_error_records akan digunakan.
javascriptTextTransformGcsPath (Opsional) URI Cloud Storage dari file .js yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakan. Misalnya, gs://my-bucket/my-udfs/my_file.js.
javascriptTextTransformFunctionName (Opsional) Nama fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakan. Misalnya, jika kode fungsi JavaScript Anda adalah myTransform(inJson) { /*...do stuff...*/ }, nama fungsi adalah myTransform. Untuk contoh UDF JavaScript, lihat Contoh UDF.

Fungsi yang ditentukan pengguna

Jika ingin, Anda dapat memperluas template ini dengan menulis fungsi yang ditentukan pengguna (UDF) di JavaScript. Template memanggil UDF untuk setiap elemen input. Payload elemen diserialisasi sebagai string JSON.

Untuk menggunakan UDF, upload file JavaScript ke Cloud Storage dan tetapkan parameter template berikut:

ParameterDeskripsi
javascriptTextTransformGcsPath Lokasi Cloud Storage file JavaScript.
javascriptTextTransformFunctionName Nama fungsi JavaScript.

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, 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 Job name, masukkan nama pekerjaan yang unik.
    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 Pub/Sub Subscription to BigQuery template.
    6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
    7. Opsional: Untuk beralih dari pemrosesan tepat satu kali ke mode streaming minimal satu kali, pilih Minimal Sekali.
    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 pekerjaan 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 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 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/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 pekerjaan 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 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