![](/img/trans.png)
[英]Apache Beam on Dataflow Not Accepting ValueProvider for BigQuery Query
[英]Apache Beam Dataflow BigQuery
如何使用apache beam和DataflowRunner从Google BigQuery数据集中获取表列表?
我找不到如何从指定的数据集获取表。 我想使用Dataflow的并行处理编程模型将表从位于美国的数据集中迁移到位于欧盟的一个数据集中。
from google.cloud import bigquery
client = bigquery.Client(project='your_project_name')
dataset_ref = client.dataset('your_data_set_name')
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.