从 ValueProvider 读取的 Dataflow BigQuery:“StaticValueProvider”对象没有属性“projectId”
Posted
技术标签:
【中文标题】从 ValueProvider 读取的 Dataflow BigQuery:“StaticValueProvider”对象没有属性“projectId”【英文标题】:Dataflow BigQuery read from ValueProvider: 'StaticValueProvider' object has no attribute 'projectId' 【发布时间】:2021-05-04 09:02:21 【问题描述】:我将 Python SDK 用于 Apache Beam。我试图通过 ValueProvider 从 BigQuery 读取数据(因为 documentation 声明这些是允许的)。
def run(bq_source_table: ValueProvider,
pipeline_options=None):
pipeline_options.view_as(SetupOptions).setup_file = "./setup.py"
with beam.Pipeline(options=pipeline_options) as pipeline:
(
pipeline
| "Read from BigQuery" >> ReadFromBigQuery(table=bq_source_table)
)
选项声明如下:
class CPipelineOptions(PipelineOptions):
@classmethod
def _add_argparse_args(cls, parser):
parser.add_value_provider_argument(
"--bq_source_table",
help="The BigQuery source table name..\n"
'"<project>:<dataset>.<table>".'
)
执行管道会产生以下错误:
AttributeError: 'StaticValueProvider' 对象没有属性 'projectId' [在运行'从 BigQuery/Read/SDFBoundedSourceReader/ParDo(SDFBoundedSourceDoFn)/SplitAndSizeRestriction' 读取时]
关于如何解决此问题的任何建议?我确实不想使用 Flex 模板。
编辑:值得一提的是query
参数确实支持ValueProvider
。这可能是一个错误吗?
【问题讨论】:
【参考方案1】:我唯一的建议是使用 Flex 模板。
【讨论】:
我目前通过向 BigQuery 连接器提供源查询 ValueProvider 来解决此问题。连接器不接受源表名称的 ValueProvider 仍然很奇怪。以上是关于从 ValueProvider 读取的 Dataflow BigQuery:“StaticValueProvider”对象没有属性“projectId”的主要内容,如果未能解决你的问题,请参考以下文章
使用 TextIO 和 ValueProvider 创建数据流模板时出错
如何在 R studio(闪亮的 App)中的 max() 函数中传递输入?