无法使用pyspark在本地spark(在我的mac上)加载bigquery数据

时间:2016-02-12 06:22:03

标签: google-bigquery pyspark

执行以下代码后,我收到以下错误。我在安装中遗漏了什么吗?我正在使用安装在我的本地mac上的spark,所以我正在检查是否需要为下面的代码安装额外的库来工作并从bigquery加载数据。

Py4JJavaError                             Traceback (most recent call last)
<ipython-input-8-9d6701949cac> in <module>()
     13     "com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat",
     14     "org.apache.hadoop.io.LongWritable", "com.google.gson.JsonObject",
---> 15     conf=conf).map(lambda k: json.loads(k[1])).map(lambda x: (x["word"],

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD.
: java.lang.ClassNotFoundException: com.google.gson.JsonObject
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)

2 个答案:

答案 0 :(得分:2)

错误“java.lang.ClassNotFoundException:com.google.gson.JsonObject”似乎暗示缺少某个库。

请尝试将gson jar添加到您的路径中:http://search.maven.org/#artifactdetails|com.google.code.gson|gson|2.6.1|jar

答案 1 :(得分:0)

在Felipe的响应中突出显示埋在connector链接中的内容:默认情况下,bq连接器以前包含在Cloud Dataproc中,但从v 1.3开始删除。该链接向您展示了三种找回方法。