Сохранение выходных данных в потоковом режиме Pubsub в файлах - PullRequest
0 голосов
/ 14 марта 2019

Я использую потоковую передачу 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")

})

Есть идеи, как объединить больше сообщений в один файл?

спасибо!

...