Я использую потоковую передачу Spark для подключения к google pubsub и могу читать и распечатывать сообщения.
Я пытаюсь собрать сообщения и сохранить их в текстовые файлы (например, все сообщения, собранные в течение 5 минут, отправляются в один и тот же файл).
Вот как я создаю поток:
val messagesStream: DStream[String] = PubsubUtils
.createStream(
ssc,
<project name>,
None,
<subscription name>,
SparkGCPCredentials.builder.build(), StorageLevel.MEMORY_AND_DISK_SER_2)
.map(message => new String(message.getData(), StandardCharsets.UTF_8))
Теперь, если я использую foreachRDD, я могу легко сохранять каждое сообщение в разных файлах или перезаписывать один и тот же файл:
messagesStream.foreachRDD((rdd) => {
rdd.coalesce(1).saveAsTextFile("/path/toFile")
})
Есть идеи, как объединить больше сообщений в один файл?
спасибо!