gpt4 book ai didi

apache-spark - 在 Key 上组合两个 Spark Streams

转载 作者:行者123 更新时间:2023-12-04 04:10:35 24 4
gpt4 key购买 nike

我有两个 kafka 流,其中包含两个并行操作的结果,我需要一种方法来组合两个流,以便我可以在单个 spark 变换中处理结果。这可能吗? (下图)

Stream 1 {id:1,result1:True}
Stream 2 {id:1,result2:False}
JOIN(Stream 1, Stream 2, On "id") -> Output Stream {id:1,result1:True,result2:False}

当前无效的代码:
    kvs1 = KafkaUtils.createStream(sparkstreamingcontext, ZOOKEEPER, NAME+"_stream", {"test_join_1": 1})
kvs2 = KafkaUtils.createStream(sparkstreamingcontext, ZOOKEEPER, NAME+"_stream", {"test_join_2": 1})

messages_RDDstream1 = kvs1.map(lambda x: x[1])
messages_RDDstream2 = kvs2.map(lambda x: x[1])

messages_RDDstream_Final = messages_RDDstream1.join(messages_RDDstream2)

当我将两个示例 json 传递给具有相同 ID 字段的每个 Kafka 队列时,我的最终 RDD 流中没有返回任何内容。我想我错过了将我的 Kafka JSON 字符串消息转换为元组的阶段?

我还尝试了以下方法:
kvs1.map(lambda (key, value): json.loads(value))


kvs1.map(lambda x: json.loads(x))

无济于事

干杯

亚当

最佳答案

对 Spark 的文档进行简单的查找就会为您提供答案..
您可以使用 join手术。

join(otherStream, [numTasks]) :

When called on two DStreams of (K, V) and (K, W) pairs, return a new DStream of (K, (V, W)) pairs with all pairs of elements for each key.


例如: val streamJoined = stream1.join(stream2)

关于apache-spark - 在 Key 上组合两个 Spark Streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38323808/

24 4 0