使用Beam,Python读取具有Avro模式的Big Query表

时间:2019-07-01 14:01:34

标签: python avro beam python-bigquery

我将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

1 个答案:

答案 0 :(得分:2)

这是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(它应该没有正在运行的错误)。