将Spark Streaming pubsub输出保存到文件

时间:2019-03-14 09:17:59

标签: spark-streaming google-cloud-pubsub

我正在使用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")

})

关于如何在单个文件中批处理更多邮件的任何想法?

谢谢!

0 个答案:

没有答案