Я пытаюсь записать в локальную корзину s3, используя s3a
, и поэтому мой искровой writeStream()
API использует path как s3a://test-bucket/
. Чтобы убедиться, что спарк понимает это, я добавил hadoop-aws-2.7.4.jar
и aws-java-sdk-1.7.4.jar
в build.sbt и настроил код oop следующим образом -
spark.sparkContext.hadoopConfiguration.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
spark.sparkContext.hadoopConfiguration.set("fs.s3a.endpoint", ENDPOINT);
spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", ACCESS_KEY);
spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", SECRET_KEY);
spark.sparkContext.hadoopConfiguration.set("fs.s3a.path.style.access", "true")
И теперь я пытаюсь записать данные в мой Настраиваемая конечная точка s3 выглядит следующим образом -
val dataStreamWriter: DataStreamWriter[Row] = PM25quality.select(
dayofmonth(current_date()) as "day",
month(current_date()) as "month",
year(current_date()) as "year",
column("time"),
column("quality"),
column("PM25"))
.writeStream
.partitionBy("year", "month", "day")
.format("csv")
.outputMode("append")
.option("path", "s3a://test-bucket/")
val streamingQuery: StreamingQuery = dataStreamWriter.start()
Но похоже, что это разрешение доступа в стиле пути не работает, и оно все еще читает имя корзины перед URL, как это -
20/05/01 15:39:02 INFO AmazonHttpClient: Unable to execute HTTP request: test-bucket.s3-region0.cloudian.com
java.net.UnknownHostException: test-bucket.s3-region0.cloudian.com
Может кто-то дайте мне знать, если я что-то здесь упускаю?