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?