Коннектор BigQuery для pyspark через пример входного формата Hadoop

У меня есть большой набор данных, хранящийся в таблице BigQuery, и я хотел бы загрузить его в RDD pypark для обработки данных ETL.

Я понял, что BigQuery поддерживает формат ввода-вывода Hadoop.

https://cloud.google.com/hadoop/writing-with-bigquery-connector

и pyspark должен иметь возможность использовать этот интерфейс для создания RDD с помощью метода «newAPIHadoopRDD».

http://spark.apache.org/docs/latest/api/python/pyspark.html

К сожалению, документации на обоих концах кажется скудным и выходит за рамки моих знаний о Hadoop / Spark / BigQuery. Кто-нибудь придумал, как это сделать?


person Luca Fiaschi    schedule 14.07.2015    source источник


Ответы (1)


Теперь у Google есть пример использования коннектора BigQuery с Искра.

Кажется, проблема с использованием GsonBigQueryInputFormat, но у меня есть простой пример подсчета слов Шекспира, работающий

import json
import pyspark
sc = pyspark.SparkContext()

hadoopConf=sc._jsc.hadoopConfiguration()
hadoopConf.get("fs.gs.system.bucket")

conf = {"mapred.bq.project.id": "<project_id>", "mapred.bq.gcs.bucket": "<bucket>", "mapred.bq.input.project.id": "publicdata", "mapred.bq.input.dataset.id":"samples", "mapred.bq.input.table.id": "shakespeare"  }

tableData = sc.newAPIHadoopRDD("com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat", "org.apache.hadoop.io.LongWritable", "com.google.gson.JsonObject", conf=conf).map(lambda k: json.loads(k[1])).map(lambda x: (x["word"], int(x["word_count"]))).reduceByKey(lambda x,y: x+y)
print tableData.take(10)
person Matt J    schedule 22.10.2015
comment
Привет да. На самом деле я уже разобрался сам. Однако выложили только коннектор для scala. Ставлю раствор с помощью pyspark, как успею. - person Luca Fiaschi; 24.10.2015