Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将Pyspark数据帧写入S3_Python_Apache Spark_Amazon S3_Pyspark - Fatal编程技术网

Python 将Pyspark数据帧写入S3

Python 将Pyspark数据帧写入S3,python,apache-spark,amazon-s3,pyspark,Python,Apache Spark,Amazon S3,Pyspark,您好,我是pyspark的新手,我有一个使用以下方法形成的数据帧: spark = SparkSession.builder \ .appName("Python Spark SQL basic example") \ .config("spark.some.config.option", "some-value") \ .getOrCreate() df = spark.read.option("h

您好,我是pyspark的新手,我有一个使用以下方法形成的数据帧:

spark = SparkSession.builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()

df = spark.read.option("header",True).csv("input.csv")
我现在想把这个df写到s3,但我已经尝试了所有在线可用的东西,没有任何帮助

我第一次尝试设置这个

spark.sparkContext.hadoopConfiguration.set("fs.s3n.access.key", "my access key")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.secret.key", "my secret key")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.endpoint", "s3.amazonaws.com")
但对于这一点,我得到了一个错误:

AttributeError: 'SparkContext' object has no attribute 'hadoopConfiguration'
我还尝试了以下不同的写作方法:

df.write.option("header","true").csv("s3://mypath")
df.write.parquet("s3://mypath", mode="overwrite")
df.coalesce(1).write.format('csv').mode('overwrite').option("header", "false")\
.save("s3://mypath")
但对于所有这些,我得到了相同的错误:

: java.io.IOException: No FileSystem for scheme: s3

我是新手,我真的不知道该怎么办。有人能帮我吗?

只需将配置更改为:

spark.sparkContext._jsc.hadoopConfiguration().set("fs.s3n.access.key", "my access key")
spark.sparkContext._jsc.hadoopConfiguration().set("fs.s3n.secret.key", "my secret key")
spark.sparkContext._jsc.hadoopConfiguration().set("fs.s3n.endpoint", "s3.amazonaws.com")

你看到了吗?@werner我看到了,但是我得到了这个错误
AnalysisException:Path不存在:file:/home/ubuntu/Notebooks/s3/mypath
为什么它要在ec2中查找路径?不同的错误现在
AttributeError:'JavaMember'对象没有属性“set”
你正在使用哪个spark版本?spark版本是3.1.1i将编辑配置看看jsut,将其添加到hadoopConfiguration()中