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 从数据库中读取批量数据

apache-beam 从 GCS 存储桶的多个文件夹中读取多个文件并加载它 bigquery python

使用可序列化函数读取大查询 - 如何从 GenericRecord 获取 NUMERIC 类型

Apache Beam 处理文件

无法使用 Apache Beam(Python SDK)读取 Pub/Sub 消息

Dataflow GCP(Apache Beam)-连续读取大量文件(OutOfMemory)