spark writeStream无法与自定义S3端点一起使用

问题描述 投票:0回答:1

对于Spark非常陌生,并且在使用Spark结构化流(v2.4.3)时,我试图将流数据帧写入自定义S3。我确保可以登录,并使用UI手动将数据上传到s3存储桶,并为其设置了ACCESS_KEYSECRET_KEY

val sc = spark.sparkContext
sc.hadoopConfiguration.set("fs.s3a.endpoint", "s3-region1.myObjectStore.com:443")
sc.hadoopConfiguration.set("fs.s3a.access.key", "00cce9eb2c589b1b1b5b")
sc.hadoopConfiguration.set("fs.s3a.secret.key", "flmheKX9Gb1tTlImO6xR++9kvnUByfRKZfI7LJT8")
sc.hadoopConfiguration.set("fs.s3a.path.style.access", "true") // bucket name appended as url/bucket and not bucket.url
val writeToS3Query = stream.writeStream
      .format("csv")
      .option("sep", ",")
      .option("header", true)
      .outputMode("append")
      .trigger(Trigger.ProcessingTime("30 seconds"))
      .option("path", "s3a://bucket0/")
      .option("checkpointLocation", "/Users/home/checkpoints/s3-checkpointing")
      .start()

但是,我得到的错误是>

Unable to execute HTTP request: bucket0.s3-region1.myObjectStore.com: nodename nor servname provided, or not known

我在/etc/hosts文件中具有URL和IP的映射,并且可以从其他来源访问该存储桶。还有其他方法可以成功完成此操作吗?我真的不确定为什么Spark执行存储桶名称时会在URL之前附加存储桶名称。

这可能是因为在创建会话之后我正在设置spark上下文hadoop配置,所以它们无效吗?但是,当我在path中提供s3a://bucket0值时,它如何能够引用实际的URL。

对于Spark非常陌生,并且在使用Spark结构化流(v2.4.3)时,我试图将流数据帧写入自定义S3。我已经确保能够登录,上传数据...

apache-spark amazon-s3 apache-spark-sql spark-streaming spark-structured-streaming
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.