将多个BigQuery表加载到Spark \ HadoopRDD中

时间:2016-06-15 10:32:21

标签: apache-spark google-bigquery

在定义将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导入方法。如果可能的话,我想避免额外的步骤。

谢谢!

0 个答案:

没有答案