如何使用带有DataflowRunner的apache beam从Google BigQuery数据集中获取表格列表?
我找不到如何从指定的数据集中获取表 . 我想使用Dataflow的并行处理编程模型将表格从位于美国的数据集迁移到EU中的表格 .
您可以尝试使用google-cloud-examples maven repo . 有一个名为 BigQuerySnippets 的类,它进行API调用以获取表元,您可以获取模式 . 请注意,限制API配额是每秒6个最大并发请求数 .
BigQuerySnippets
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 }
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
3 回答
您可以尝试使用google-cloud-examples maven repo . 有一个名为
BigQuerySnippets
的类,它进行API调用以获取表元,您可以获取模式 . 请注意,限制API配额是每秒6个最大并发请求数 .Dataflow的目的是创建管道,因此不包括发出一些API请求的能力 . 您必须使用BigQuery Java客户端库来获取数据,然后将其提供给Apache Pipeline .
声明库
准备一个bigquery客户端
准备对新数据集的引用
发出API请求
参考:https://googlecloudplatform.github.io/google-cloud-python/latest/bigquery/usage.html#datasets