繁体   English   中英

Apache Beam数据流BigQuery

[英]Apache Beam Dataflow BigQuery

如何使用apache beam和DataflowRunner从Google BigQuery数据集中获取表列表?

我找不到如何从指定的数据集获取表。 我想使用Dataflow的并行处理编程模型将表从位于美国的数据集中迁移到位于欧盟的一个数据集中。

声明图书馆

from google.cloud import bigquery

准备一个bigquery客户

client = bigquery.Client(project='your_project_name')

准备对新数据集的引用

dataset_ref = client.dataset('your_data_set_name')

发出API请求

tables = list(client.list_tables(dataset_ref))
if tables:
    for table in tables:
        print('\t{}'.format(table.table_id))

参考: https : //googlecloudplatform.github.io/google-cloud-python/latest/bigquery/usage.html#datasets

您可以尝试使用google-cloud-examples Maven存储库。 有一个名为BigQuerySnippets的类,该类进行API调用来获取表元,您可以获取模式。 请注意,限制API配额是每秒6个最大并发请求。

Dataflow的目的是创建管道,因此不包括发出某些API请求的功能。 您必须使用BigQuery Java客户端库来获取数据,然后将其提供给Apache Pipeline。

DatasetId datasetId = DatasetId.of(projectId, datasetName);
Page<Table> tables = bigquery.listTables(datasetId, TableListOption.pageSize(100));
for (Table table : tables.iterateAll()) {
  // do something
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM