我有一个Spark数据框,我正在尝试使用
行保存到Google Storage存储桶df.write.format("com.databricks.spark.csv").save('gs://some-test-bucket-delete-me')
但是Pyspark引发了以下异常
Py4JJavaError: An error occurred while calling o55.save.
: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem not found
我尝试了什么:
此异常的典型解决方案是确保环境变量HADOOP_CLASSPATH
指向gcs-connector-latest-hadoop2.jar
文件。我尝试过使用Hadoop版本1以及版本2罐子这就是问题所在。我试过用
sc._jsc.hadoopConfiguration().set("spark.driver.extraClassPath", "/home/****/hadoop-2.8.2/share/hadoop/common/lib/gcs-connector-latest-hadoop1.jar")
无济于事。
如果我从bash尝试hadoop fs -ls gs://gs://some-test-bucket-delete-me
,该命令将完美返回,这应该表明Google云存储连接可以正常工作但由于某种原因我似乎无法在PySpark中使用此功能。
可能很重要的事情:
Spark版本2.2.0
Python 3.6.1 :: Anaconda custom(64位)
我在本地运行PySpark
答案 0 :(得分:1)
您应首先运行gcloud init
然后尝试df.write.csv('gs://some-test-bucket-delete-me/file_name')