【问题标题】:Read Big Query table with Avro schema using beam, python使用梁、python 读取具有 Avro 模式的大查询表
【发布时间】:2019-11-12 04:35:32
【问题描述】:

我将 apache-beam SDK 从 2.5.0 更改为 2.12.0,并在使用 python 从 BEAM 中的 Big Query 读取表时出现 Avro 架构错误。

BQ 表有一个 TIMESTAMP 字段,其他都是 STRING。

data = pipe \
        | 'read bigquery' >> beam.io.Read(
            beam.io.BigQuerySource(
                dataset=args.dataset_name,
                table=args.table_name,
                use_standard_sql=True))

错误:

SchemaParseException: Type property "[u'null', {u'logicalType': u'timestamp-micros', u'type': u'long'}]" not a valid Avro schema: Union item must be a valid Avro schema: Currently does not support timestamp-micros logical type

已安装的软件包:

python=2.7.0,apache-beam=2.12.0,avro=1.9.0

【问题讨论】:

    标签: python google-bigquery apache-beam avro


    【解决方案1】:

    这是avro 1.9.0 中的回归。问题跟踪器在这里:https://issues.apache.org/jira/browse/AVRO-2429

    如果你使用的是 python 2,你应该可以通过 pip install "avro==1.8.2" 降级到 1.8.2。如果您使用的是 python 3,我相信 beam 应该默认尝试使用 fastavro(它不应该有您遇到的错误)。

    【讨论】:

    • 像魔术一样工作!谢谢你。我使用 python 2,将我的包版本添加到描述中
    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2019-10-21
    • 2018-11-04
    相关资源
    最近更新 更多