Apache Beam Python — преобразование SQL с именованной проблемой PCollection

Я пытаюсь выполнить приведенный ниже код, в котором я использую Named Tuple для PCollection и преобразование SQL для выполнения простого выбора.

По ссылке на видео (4:06): https://www.youtube.com/watch?v=zx4p-UNSmrA.

Вместо использования PCOLLECTION в запросе SQLTransform также можно предоставить именованные коллекции PCollections, как показано ниже.

Кодовый блок

      class EmployeeType(typing.NamedTuple):
    name:str
    age:int

beam.coders.registry.register_coder(EmployeeType, beam.coders.RowCoder)

pcol = p | "Create" >> beam.Create([EmployeeType(name="ABC", age=10)]).with_output_types(EmployeeType)

(
{'a':pcol} | SqlTransform(
    """ SELECT age FROM a """) 
    | "Map" >> beam.Map(lambda row: row.age)
    | "Print" >> beam.Map(print) 
)

p.run()

Однако приведенный ниже кодовый блок выдает ошибку

Caused by: org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.sql.validate.SqlValidatorException: Object 'a' not found

Используемый SDK Apache Beam — 2.35.0, есть ли какие-либо известные ограничения на использование именованного PCollection?

0 ответов

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