火花数据帧结构化流写入s3a://给出错误400

时间:2019-05-20 11:34:06

标签: scala apache-spark amazon-s3 hdfs spark-structured-streaming

我正尝试使用apache spark(2.4.0)结构化的流api从kafka(json消息)流式传输数据并将其写入到aws s3中。

但是我从aws lib得到一个异常,没有太多细节。

我尝试在本地fs和hdfs上编写,它可以正常工作。

对于S3,我可以使用hdfs dfs -ls s3://<bucket-name>/test/通过hdfs cli列出文件

我要做什么的摘要

val spark = SparkSession.builder()
     .master("local[*]")
     .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
     .config("spark.hadoop.fs.s3a.access.key", "xxxx")
     .config("spark.hadoop.fs.s3a.secret.key", "xxxx")
     .config("spark.hadoop.fs.s3a.endpoint", "s3.ap-south-1.amazonaws.com")
     .getOrCreate()

val df = spark.readStream.format("kafka")
               .option("kafka.bootstrap.servers","localhost:9092")
               .option("subscribe", "test")
               .load()
// SOME ETL THEN

   df.writeStream
       .outputMode("append")
       .option("checkpointLocation", "s3a://<bucket-name>/test/")
       .format("json")
       .option("path", "s3a://<bucket-name>/test/")
       .start()

我得到的异常

  

线程“ main”中的异常com.amazonaws.services.s3.model.AmazonS3Exception:状态代码:400,AWS服务:Amazon S3,AWS错误代码:null,AWS错误消息:错误的请求

0 个答案:

没有答案