Как записать несколько кадров потоковых данных Spark в S3 со структурой yyyy / mm / dd? - PullRequest
0 голосов
/ 05 мая 2020

Я использую настраиваемый URL-адрес s3 для указания пути s3. И у меня есть более 5 потоков данных, которые я хочу сохранить в корзине s3 со структурированным yyyy/mm/dd. Но как только структура yyyy / mm / dd создается любым из потоковых запросов, я не могу использовать ее снова, поскольку S3 не разрешает операцию добавления (не уверен, хотя, если это причина). Как я могу добиться этого в искре? Вот мой код для writeStream -

val dsw: DataStreamWriter[Row] = O3quality.select(
 dayofmonth(column("time")) as "day",
 month(column("time")) as "month",
 year(column("time")) as "year",
 column("time"),
 column("quality"),
 column("O3"))
.writeStream
.partitionBy("year", "month", "day")
.format("csv")
.outputMode("append")
.option("path", "s3a://test-bucket/ozone/")

val sq: StreamingQuery = dsw.start()

Как видите, я уже использую предложение partitionBy , чтобы мои данные были структурированы во время записи. Но как я могу использовать годовой или месячный каталог, если у меня есть дополнительные данные, которые нужно сохранить при следующем запуске запросов? Если это невозможно, как можно обойтись здесь?

...