是否可以在用Python编写的数据流管道中导入Java方法“WrapBigQueryInSertror”?

是否可以在用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

我正试图用Python3创建一个数据流管道,它从发布/订阅主题中读取消息,最后“从头开始”将它们写到BigQuery表中。我在名为(实现我所寻找的)的数据流Java模板中看到了第三步中的一段代码,用于处理转换为表行的发布/订阅消息,这些消息在尝试将它们插入BigQuery表时失败。最后,在步骤4和5的代码段中,这些代码段被展平并插入到错误表中:

  • 步骤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;