У меня есть фрейм данных с 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?