在定义将BigQuery数据导入HadoopRDD时,有没有办法在输入参数中包含多个表?
这是我的基本脚本。如何提供表格列表而不仅仅是 table_20160615 ?
import json
import pprint
import pyspark
sc = pyspark.SparkContext()
# Use the Google Cloud Storage bucket for temporary BigQuery export data used
# by the InputFormat. This assumes the Google Cloud Storage connector for
# Hadoop is configured.
bucket = sc._jsc.hadoopConfiguration().get('fs.gs.system.bucket')
project = sc._jsc.hadoopConfiguration().get('fs.gs.project.id')
input_directory = 'gs://{}/tmp/bigquery/pyspark_input'.format(bucket)
conf = {
# Input Parameters
'mapred.bq.project.id': project,
'mapred.bq.gcs.bucket': bucket,
'mapred.bq.temp.gcs.path': input_directory,
'mapred.bq.input.project.id': project,
'mapred.bq.input.dataset.id': 'my_dataset',
'mapred.bq.input.table.id': 'table_20160615',
}
# Load data in from BigQuery.
table_data = sc.newAPIHadoopRDD(
'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
'org.apache.hadoop.io.LongWritable',
'com.google.gson.JsonObject',
conf=conf)
pprint.pprint(table_data.take(10))
我发现通配符有效,所以我可以使用'table_201606 *',但它不是很精确。我只想要一个选择日期范围。
我的替代解决方案是在BigQuery中创建一个联合表,或者首先将表作为文件提取,然后使用textFile导入方法。如果可能的话,我想避免额外的步骤。
谢谢!