Невозможно выполнить запись в пользовательский S3 с использованием потоковой потоковой передачи данных dataframe.writeStream - PullRequest
0 голосов
/ 26 октября 2019

У меня есть фрейм данных с 18 столбцами в нем, и этот фрейм данных генерируется посредством некоторой агрегации sql искры. Так как я использую Spark Structured Streaming, я не уверен, смогу ли я написать его без writeStream или нет. Но используя writeStream, я не могу понять, как я могу сохранить его в своем собственном хранилище объектов S3.

Код -

    // Configure spark context with S3 creds
    val accessKey = "access_key"
    val secretKey = "secret-key"
    val endpoint = "https://URI:port"

    spark.sparkContext.hadoopConfiguration.set("spark.hadoop.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", accessKey)
    spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", secretKey)

И после этой настройки и некоторых операций надданные, я пытаюсь записать этот фрейм данных в мой локальный сервис S3 следующим образом -

    val query = rawData
      .writeStream
      .format("csv")
      .option("format", "append")
      .option("path", "s3a://bucket0/spark-data/")
      .outputMode("append")
      .start()

Обратите внимание, что bucket0 уже существует, и ключ доступа и секретный ключ действительны и активны дляПользователь. Отображение для конечной точки также присутствует в файле /etc/hosts.

Есть ли другой способ записи данных в корзину S3?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...