0
執行下面的代碼後,我得到下面的錯誤。我在安裝中丟失了什麼?我正在使用安裝在我的本地mac上的spark,所以我正在檢查是否需要爲下面的代碼安裝額外的庫以從bigquery中運行和加載數據。無法使用pyspark在本地火花(在我的mac上)加載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)
費利佩的感謝!我現在正在收到另一個錯誤 - Py4JJavaError:調用z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD時發生錯誤。 :java.lang.ClassNotFoundException:com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat 這又是一個缺少jar的問題嗎? – VP10
是的,您現在缺少BigQuery連接器:https://cloud.google.com/hadoop/bigquery-connector –
是的,謝謝我下載了!獲得另一個錯誤如下。你知道我應該如何在我的代碼中傳遞bigquery帳戶憑證嗎?我運行附加的代碼(在我的主要問題)。 Py4JJavaError:調用z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD時發生錯誤。 :java.io.IOException:從元數據服務器獲取訪問令牌時出錯:http:// metadata/computeMetadata/v1/instance/service-accounts/default/token – VP10