Доступ к стилю Spark Path со свойством fs.s3a.path.style.access не работает - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь записать в локальную корзину 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

Может кто-то дайте мне знать, если я что-то здесь упускаю?

1 Ответ

0 голосов
/ 04 мая 2020

Я разыскал эту проблему и спасибо mazaneicha за комментарий. Это делается установкой oop - aws jar версии на 2.8.0 в моем build.sbt. Похоже, отдельный флаг fs.s3a.path.style.access был введен в Had oop 2.8.0, когда я нашел билет JIRA HAD OOP -12963 для этой проблемы. И это сработало.

...