我正尝试使用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错误消息:错误的请求