Spark SQL Streaming 连接并使用连接键转置一对多连接记录

问题描述 投票:0回答:1

我在Kafka主题中有2个流数据,我必须加入

Stream1.join(Stream2) 在公共密钥上,我已经在事件时间戳字段中为两个流应用了水印和窗口。我也可以看到合并结果,

但用例场景是,

如果我连接 1 到多条记录(DataFrame),我必须在连接后立即将它们转变成一条记录

流1

|姓名| 标准|活动时间

|XXX | SSLC | 2024-05-05:09:30:00上午

|YYY| HSC | 2024-05-04:09:35:00上午

直播2

|姓名|主题|活动时间

|XXX |子 1 | 2024-05-05:10:15:00上午

|XXX |子2 | 2024-05-05:10:15:00上午

|XXX |子3 | 2024-05-05:10:15:00上午

|YYY|子 1 | 2024-05-05:10:15:00上午

|YYY|子2 | 2024-05-05:10:15:00上午

|YYY|子3 | 2024-05-05:10:15:00上午

|YYY|子 4 | 2024-05-05:10:15:00上午

第1步:joinedDF = Stream1.join(stream2).on("Name")
步骤2:joinedDF.groupBy("Name").pivot("Subject")

结果:

XXX |子1 |子2 |子3

YYY|子1|子 2 |子 3 |子 4

我了解在第2步期间不支持多重聚合

将其实现为有状态 Spark 流(单个)作业的最佳方法是什么。

apache-spark pivot streaming
1个回答
0
投票

使用每个键处理多个记录的过程。实现这一目标的一种方法是从窗口开始,应用 UDF,然后将主题旋转到列中。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.