使用 beam python 使用 Avro 模式读取 Big Query table
Read Big Query table with Avro schema using beam, python
我将 apache-beam SDK 从 2.5.0 更改为 2.12.0,并在使用 python.
从 beam 中的 Big Query 读取 table 时出现 Avro 架构错误
BQ table 有一个 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
这是 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
(它不应该有你 运行 的错误)。
我将 apache-beam SDK 从 2.5.0 更改为 2.12.0,并在使用 python.
从 beam 中的 Big Query 读取 table 时出现 Avro 架构错误BQ table 有一个 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
这是 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
(它不应该有你 运行 的错误)。