[英]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.