火花流foreach多个作家
Posted
技术标签:
【中文标题】火花流foreach多个作家【英文标题】:spark streaming foreach multiple writer 【发布时间】:2018-08-16 13:57:01 【问题描述】:我希望从 JSON 文件中读取结构化流,处理数据并将数据写入 Kafka 和 Parquet 接收器。我在下面看到相同的示例代码
datasetOfString.writeStream.foreach(new ForeachWriter[String]
def open(partitionId: Long, version: Long): Boolean =
// open connection
def process(record: String) =
// write string to connection
def close(errorOrNull: Throwable): Unit =
// close the connection
)
但是我怎样才能在这里传递多个作家呢?像下面这样吗?
datasetOfString.writeStream.foreach(kafkaWriter).start()
datasetOfString.writeStream.foreach(parquetWriter).start()
如果我这样做,那么使用 foreach 作家的目的是什么?只是为了在写作时进行更多控制吗?
【问题讨论】:
【参考方案1】:foreach() 操作是一个动作。
它不返回任何值。
它对RDD的每个元素执行输入函数
引用 Spark Structured Streaming 的 spark official documentation
流式查询当前绑定到单个接收器,因此多路复用 不可能通过相同的流式查询使用现有接收器进行写入。 在您当前的功能实现中,您将有效地处理数据两次。就个人而言,我仍然不推荐这个,您可以根据需要处理数据 微批处理,然后使用 foreach 或自定义接收器 写入 Kafka 主题和 parquet 源
【讨论】:
以上是关于火花流foreach多个作家的主要内容,如果未能解决你的问题,请参考以下文章