【问题标题】:Write Pyspark dataframe to S3 [duplicate]将 Pyspark 数据帧写入 S3 [重复]
【发布时间】:2021-03-22 20:56:00
【问题描述】:

您好,我是 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

我是新手,我真的不知道该怎么做。谁能帮帮我?

【问题讨论】:

  • 你看到this question了吗?
  • @werner 我做了,但我收到了这个错误AnalysisException: Path does not exist: file:/home/ubuntu/Notebooks/s3/mypath 为什么它在 ec2 中寻找路径?

标签: python apache-spark amazon-s3 pyspark


【解决方案1】:

只需将配置更改为:

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")

【讨论】:

  • 现在出现不同的错误AttributeError: 'JavaMember' object has no attribute 'set'
  • 您使用的是哪个 spark 版本?
  • spark 版本为 3.1.1
  • 我将编辑配置看看 jsut 添加 hadoopConfiguration()
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2020-10-06
  • 2018-06-24
  • 2017-08-12
  • 2018-05-24
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多