Apache Beam + 大查询表读取
Posted
技术标签:
【中文标题】Apache Beam + 大查询表读取【英文标题】:Apache Beam + Big Query Table Read 【发布时间】:2019-08-17 13:55:38 【问题描述】:我在项目的大查询中有数据集: 项目:项目-x 表:table01 数据集:dataset01
例如,我想从 Apache Beam 连接到它并读取一个 column-column01 的值...
这就是我所拥有的:
import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="Z:\DEV\CREDENTIALS\cred.json"
QUERY="""
SELECT column01 from project-x:table01.dataset01
"""
options = 'project': 'project-x',
'runner': 'DirectRunner',
'region': 'EU'
pipeline_options = beam.pipeline.PipelineOptions(flags=[], **options)
pipeline=beam.Pipeline(options=pipeline_options)
BQ_source = beam.io.BigQuerySource(query = QUERY)
BQ_data = pipeline | beam.io.Read(BQ_source)
所以在执行之后我什么也没有得到......我认为这是一些基本问题,但我刚刚开始并且真的很想看到一些结果。感谢您的帮助。
【问题讨论】:
【参考方案1】:有 1 个错误,我有 1 个建议 错误:from 格式为 project:dataset.Table 是旧版 SQL。
建议:更喜欢标准 SQL 以便能够使用所有新的 bigquery 功能!从格式是`project.dataset.table` 需要反向报价。并在 beam 中设置选项 legacy=off。
【讨论】:
以上是关于Apache Beam + 大查询表读取的主要内容,如果未能解决你的问题,请参考以下文章
apache-beam 从 GCS 存储桶的多个文件夹中读取多个文件并加载它 bigquery python
使用可序列化函数读取大查询 - 如何从 GenericRecord 获取 NUMERIC 类型