无法将PySpark中的Spark数据帧保存到Google云端存储

时间:2017-11-20 06:28:18

标签: python pyspark google-cloud-storage

我有一个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罐子这就是问题所在。我试过用

在Jupyter笔记本中明确指出它
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

1 个答案:

答案 0 :(得分:1)

您应首先运行gcloud init

然后尝试df.write.csv('gs://some-test-bucket-delete-me/file_name')