通过本地 DataFlow 作业写入 BigQuery
Writing to BigQuery via local DataFlow job
我在我的机器上本地设置了一个 DataFlow 管道。它采用一个包含 JSON 个对象的示例换行分隔文件,执行它的操作,将最终结果格式化为 TableRow
。当需要写入 BigQuery 时,我不知道如何进行身份验证。我在 Dataflow 的文档或示例中找不到任何使用本地管道写入 BigQuery 的内容。如果可能的话,我想知道该怎么做。在我看来,它应该是这样的:
...
session_windowed_items.apply(ParDo.of(new FormatAsTableRowFn()))
.apply(BigQueryIO.Write
.withCredentials/Token(SOME_TOKEN) // <- This line
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER)
.to("project:db.table"));
...
或
...
PipelineOptions options = PipelineOptionsFactory.create();
options.setGoogleCloudCredentials/Token(SOME_TOKEN) // <- This line
Pipeline p = Pipeline.create(options);
...
你的第二种方法是正确的。它看起来像这样:
GcpOptions gcpOptions = options.as(GcpOptions.class);
gcpOptions.setGcpCredential(...);
gcpOptions.setProject(...);
// etc
options.as(SomeSpecificOptions.class)
的成语值得记住
您需要通读 GcpOptions 以了解可用的方法。
我在我的机器上本地设置了一个 DataFlow 管道。它采用一个包含 JSON 个对象的示例换行分隔文件,执行它的操作,将最终结果格式化为 TableRow
。当需要写入 BigQuery 时,我不知道如何进行身份验证。我在 Dataflow 的文档或示例中找不到任何使用本地管道写入 BigQuery 的内容。如果可能的话,我想知道该怎么做。在我看来,它应该是这样的:
...
session_windowed_items.apply(ParDo.of(new FormatAsTableRowFn()))
.apply(BigQueryIO.Write
.withCredentials/Token(SOME_TOKEN) // <- This line
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER)
.to("project:db.table"));
...
或
...
PipelineOptions options = PipelineOptionsFactory.create();
options.setGoogleCloudCredentials/Token(SOME_TOKEN) // <- This line
Pipeline p = Pipeline.create(options);
...
你的第二种方法是正确的。它看起来像这样:
GcpOptions gcpOptions = options.as(GcpOptions.class);
gcpOptions.setGcpCredential(...);
gcpOptions.setProject(...);
// etc
options.as(SomeSpecificOptions.class)
的成语值得记住
您需要通读 GcpOptions 以了解可用的方法。