您知道如何在Apache Storm中将Spout流数据传输到多个螺栓。有没有办法在Apache Spark中做类似的事情?
我基本上希望有一个程序从Kafka Queue读取数据并将其输出到2个不同的程序,然后可以用不同的方式处理它。
具体来说,会有一个读取器程序从Kafka队列中读取数据并将其输出到2个程序x和y。 x将处理数据以计算一种指标(在我的情况下,它将计算用户活动),而y将计算另一种指标(在我的情况下,这将是基于不同设备检查活动)。
有人可以帮我理解Spark中的可行性吗?
答案 0 :(得分:1)
为什么不简单地创建两个拓扑?
Spoutconfig是KafkaConfig的扩展,它支持带有ZooKeeper连接信息的其他字段,并用于控制特定于KafkaSpout的行为。 Zkroot将用作root来存储消费者的偏移量。 id应该唯一标识您的鲸鱼嘴。
public SpoutConfig(BrokerHosts hosts, String topic, String zkRoot, String id);
另一种选择是从同一个喷口订购两个螺栓图,但恕我直言这不是最佳的,因为失败的元组(可能只在一个图中失败)会如果只有一个图表失败,则重播两个图表;因此,一些kafka消息将结束处理两次,使用两个分离的拓扑结构可以避免这种情况。