重命名 GCP 数据流中的 table 名称

Renaming table name in GCP dataflow

我是 GCP.I 的新手,正在构建一个数据流作业,使用 google provided templates 将数据从 Datastream 移动到 Bigquery。 我收到以下错误 (java.lang.IllegalArgumentException: Table reference is not in [project_id]:[dataset_id].[table_id] format)

我认为这是由 table 引起的,它的 table 名称中包含 space。

如何在此数据传输阶段重命名 table 名称?

谢谢

如果您使用的是提供的模板,您可以在文档中查看配置参数。似乎您尝试使用的 outputStagingTableNameTemplate 参数的格式配置不正确。你能检查一下格式是否正确吗?

gcloud beta dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --enable-streaming-engine \
    --template-file-gcs-location=gs://dataflow-templates/VERSION/flex/Cloud_Datastream_to_BigQuery \
    --parameters \
inputFilePattern=GCS_FILE_PATH,\
gcsPubSubSubscription=GCS_SUBSCRIPTION_NAME,\
outputStagingDatasetTemplate=BIGQUERY_DATASET,\
outputDatasetTemplate=BIGQUERY_DATASET,\
outputStagingTableNameTemplate=[project_id]:[dataset_id].[table_id],\
outputTableNameTemplate=BIGQUERY_TABLE_log

例如,如果目标 table 是来自 public google datasets 的 table(这是不可能的,这只是一个示例),则 outputStagingTableNameTemplate 参数应如下所示:

outputStagingTableNameTemplate=bigquery-public-data:covid19_italy.data_by_province

其中:

  • bigquery-public-数据是 project_id
  • covid19_italy 是 dataset_id
  • data_by_province 是 table_id

目前 Beam 使用不支持空格的 this 正则表达式验证 table 名称。所以这可能是一个错误。 你能提交一个 Jira here.

在使用 BigQueryIO 阅读时,您可以通过使用查询而不是 table 引用来解决这个问题。