Прочитать таблицу Big Query со схемой Avro, используя beam, python

Я изменил apache-beam SDK с 2.5.0 на 2.12.0 и получил ошибку схемы Avro при чтении таблицы из Big Query в луче с использованием python.

В таблице 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 ответ

Решение

Это регрессия в avro 1.9.0. Отслеживание проблем для этого здесь: https://issues.apache.org/jira/browse/AVRO-2429

Если вы находитесь на Python 2, вы должны быть в состоянии понизиться до 1.8.2, выполнив pip install "avro==1.8.2", Если вы на Python 3, я считаю, что луч должен попробовать использовать fastavro по умолчанию (в которой не должно быть ошибки, с которой вы столкнулись).

Другие вопросы по тегам