GCP Dataflow JOB REST 响应添加带有 "key":"datasetName", ... 的 displayData 对象

Posted

技术标签:

【中文标题】GCP Dataflow JOB REST 响应添加带有 "key":"datasetName", ... 的 displayData 对象【英文标题】:GCP Dataflow JOB REST response add displayData object with "key":"datasetName", ...GCP Dataflow JOB REST 响应添加带有 "key":"datasetName", ... 的 displayData 对象 【发布时间】:2021-11-15 00:50:35 【问题描述】:

为什么此行代码不会生成带有 "key":"datasetName", ... 的 displayData 对象,以及在使用来自 apache beam 的 BigQuery 源时,如果默认情况下没有生成它,我该如何生成它?

bigqcollection = p | 'ReadFromBQ' >> beam.io.Read(beam.io.BigQuerySource(project=project,query=get_java_query))

[更新] 添加我尝试产生的结果:

"displayData": [
                    
                        "key": "table",
                        "namespace": "....",
                        "strValue": "..."
                    ,          
                    
                        "key": "datasetName",
                        "strValue": "..."
                    
]

【问题讨论】:

您能否澄清一下您的问题是没有生成显示数据,还是生成的显示数据没有具体包含数据集名称? 否,displayData 已生成,问题出在 datasetName 上,我尝试集成一些工具,它需要在 displayData 数组中存在 datasetName 键。不确定如何在数据流作业中使用这样的关键 datasetName 创建此对象(例如,如果我们按下查看等效 REST 响应,它不会出现) 【参考方案1】:

在最新版本的 Beam 中读取 the implementation of display_data() 以获取 BigQuerySource 后,它不会从您的示例使用的查询中提取表和数据集。更重要的是,它不会创建任何专门命名为 datasetName 的字段。

我建议编写_BigQuerySource 的子类,它将您需要的字段添加到显示数据中,同时保留所有其他行为。

【讨论】:

以上是关于GCP Dataflow JOB REST 响应添加带有 "key":"datasetName", ... 的 displayData 对象的主要内容,如果未能解决你的问题,请参考以下文章

请求的身份验证范围不足 - GCP 上的 Dataflow/Apache Beam

Dataflow API 不会在 GCP 中激活

GCP Dataflow 中的 RAM 磁盘 - 有可能吗?

Dataflow SQL (GCP) 不支持使用 STRUCT 的嵌套行

包括自定义 PTransform 导致在 GCP 的 Dataflow 作业中找不到依赖项

通过 python SDK 创建 GCP Dataflow 模板问题