是否可以在用Python编写的数据流管道中导入Java方法“WrapBigQueryInSertror”?
我正试图用Python3创建一个数据流管道,它从发布/订阅主题中读取消息,最后“从头开始”将它们写到BigQuery表中。我在名为(实现我所寻找的)的数据流Java模板中看到了第三步中的一段代码,用于处理转换为表行的发布/订阅消息,这些消息在尝试将它们插入BigQuery表时失败。最后,在步骤4和5的代码段中,这些代码段被展平并插入到错误表中:是否可以在用Python编写的数据流管道中导入Java方法“WrapBigQueryInSertror”?,java,python,google-bigquery,google-cloud-dataflow,Java,Python,Google Bigquery,Google Cloud Dataflow,我正试图用Python3创建一个数据流管道,它从发布/订阅主题中读取消息,最后“从头开始”将它们写到BigQuery表中。我在名为(实现我所寻找的)的数据流Java模板中看到了第三步中的一段代码,用于处理转换为表行的发布/订阅消息,这些消息在尝试将它们插入BigQuery表时失败。最后,在步骤4和5的代码段中,这些代码段被展平并插入到错误表中: 步骤3: 为此,我怀疑实现这一点的关键在于模板中第一个导入的库: package com.google.cloud.teleport.templat
- 步骤3:
package com.google.cloud.teleport.templates;
import static com.google.cloud.teleport.templates.TextToBigQueryStreaming.wrapBigQueryInsertError;
这个方法在Python中可用吗
如果不是,有一种方法可以在Python中执行相同的操作,即不检查应该插入的记录的字段的结构和数据类型是否符合BigQuery表的预期
这种解决方法使我的流式管道速度过慢。在Beam Python中,当执行流式BigQuery写入时,BigQuery写入过程中失败的行由转换返回。看 因此,您可以用与Java模板相同的方式处理这些内容
PCollectionList.of(
ImmutableList.of(
convertedTableRows.get(UDF_DEADLETTER_OUT),
convertedTableRows.get(TRANSFORM_DEADLETTER_OUT)))
.apply("Flatten", Flatten.pCollections())
.apply(
"WriteFailedRecords",
ErrorConverters.WritePubsubMessageErrors.newBuilder()
.setErrorRecordsTable(
ValueProviderUtils.maybeUseDefaultDeadletterTable(
options.getOutputDeadletterTable(),
options.getOutputTableSpec(),
DEFAULT_DEADLETTER_TABLE_SUFFIX))
.setErrorRecordsTableSchema(ResourceUtils.getDeadletterTableSchemaJson())
.build());
failedInserts.apply(
"WriteFailedRecords",
ErrorConverters.WriteStringMessageErrors.newBuilder()
.setErrorRecordsTable(
ValueProviderUtils.maybeUseDefaultDeadletterTable(
options.getOutputDeadletterTable(),
options.getOutputTableSpec(),
DEFAULT_DEADLETTER_TABLE_SUFFIX))
.setErrorRecordsTableSchema(ResourceUtils.getDeadletterTableSchemaJson())
.build());
package com.google.cloud.teleport.templates;
import static com.google.cloud.teleport.templates.TextToBigQueryStreaming.wrapBigQueryInsertError;