Dataproc上PySpark中的BigQuery连接器ClassNotFoundException

Dataproc上PySpark中的BigQuery连接器ClassNotFoundException,pyspark,google-bigquery,google-cloud-dataproc,Pyspark,Google Bigquery,Google Cloud Dataproc,我正在尝试使用Dataproc在PySpark中运行脚本 脚本是我需要做的事情和我需要做的事情之间的一种合并,因为我想检查一切是否正常。显然,它不是 我得到的错误是: 文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,第328行,在get_return_值中 py4j.protocol.Py4JJavaError:调用z:org.apache.spark.api.python.PythonRDD.newAPIHa

我正在尝试使用Dataproc在PySpark中运行脚本

脚本是我需要做的事情和我需要做的事情之间的一种合并,因为我想检查一切是否正常。显然,它不是

我得到的错误是:

文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,第328行,在get_return_值中 py4j.protocol.Py4JJavaError:调用z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD时出错。 :java.lang.ClassNotFoundException:com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat

我确保我拥有所有的罐子,并按照其他类似帖子中的建议添加了一些新的罐子。我还检查了
SPARK\u HOME
变量

下面你可以看到代码;尝试实例化表_数据时出现错误

“BigQuery I/O PySpark示例”
从未来导入绝对导入
导入json
导入pprint
导入子流程
进口Pypark
从pyspark.sql导入SQLContext
sc=pyspark.SparkContext()
bucket=sc.jsc.hadoopConfiguration().get('fs.gs.system.bucket'))
project=sc.jsc.hadoopConfiguration().get('fs.gs.project.id')
input_directory='gs://{}/hadoop/tmp/bigquery/pyspark_input'。格式(bucket)
形态={
'mapred.bq.project.id':项目,
“mapred.bq.gcs.bucket”:bucket,
“mapred.bq.temp.gcs.path”:输入目录,
'mapred.bq.input.project.id':'publicdata',
'mapred.bq.input.dataset.id':'samples',
'mapred.bq.input.table.id':'shakespeare',
}
输出数据集='wordcount\u数据集'
output\u table='wordcount\u output'
表_data=sc.newAPIHadoopRDD(
'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
'org.apache.hadoop.io.LongWritable',
'com.google.gson.JsonObject',
conf=conf)
正如中所指出的,提交作业时需要包括BigQuery连接器jar

通过Dataproc作业API:

gcloud dataproc作业提交pyspark--cluster=${cluster}\
/path/to/your/script.py\
--jars=gs://hadoop-lib/bigquery/bigquery-connector-hadoop2-latest.jar
spark submit
从集群内部提交:

spark submit--jars=gs://hadoop lib/bigquery/bigquery-connector-hadoop2-latest.jar\
/path/to/your/script.py