您知道在Apache Storm中,您可以让Spout将数据流式传输到多个螺栓。有没有办法在Apache Spark中做类似的事情?
我基本上希望有一个程序从Kafka队列中读取数据,并将其输出到两个不同的程序,然后这两个程序可以用自己的不同方式处理它。
具体地说,将有一个读取器程序从Kafka队列中读取数据并将其输出到两个程序x和y。x将处理数据以计算一种类型的指标(在我的情况下,它将计算用户活动),而y将计算另一种类型的指标(在我的情况下,这将是基于不同设备的检查活动)。
有人能告诉我这是怎么在Spark中实现的吗?
发布于 2015-09-24 17:22:41
为什么不简单地创建两个拓扑呢?
Spoutconfig是KafkaConfig的一个扩展,它支持带有ZooKeeper连接信息的附加字段,并用于控制特定于KafkaSpout的行为。Zkroot将被用作根来存储消费者的偏移量。id应该唯一地标识您的spout。
public SpoutConfig(BrokerHosts hosts, String topic, String zkRoot, String id);另一种选择是有两个螺栓的图形订阅从相同的喷嘴,但IMHO这不是最优的,因为失败的元组(可能只在一个图形中失败)将被重放到两个图形中,如果它们只在一个图形中失败的事件;因此一些kafka消息将结束被处理两次,使用两个分离的拓扑结构您避免了这一点。
https://stackoverflow.com/questions/32755265
复制相似问题