我刚从apache flink开始使用spark,想寻求一些关于转换需求的建议。在flink中,我会用有状态的flatmap来管理这个问题,但不确定是否同样适用于spark,或者有更好的替代方案。
我阅读从一个增量表,并需要写入输出到另一个
鉴于下表格式
| 时间|名称|值|
| --|--|--|
| 2023-11-01T12:51| ID| 75B|
| 2023-11-01T12:52|压力| 5 |
| 2023-11-01T12:56|电阻| 20 |
| 2023-11-01T12:57| ID| 55C|
| 2023-11-01T12:57|压力| 10 |
我要求输出为
| 时间|名称|值|ID|
| --|--|--|--|
| 2023-11-01T12:52|压力| 5 |75B|
| 2023-11-01T12:56|电阻| 20 |75B|
| 2023-11-01T12:57|压力| 10 |55C|
从本质上讲,将每个值与当时的活动ID对齐,所有数据都是时间序列。
所以我的问题是
1.这种对齐的最佳方法是什么?是有状态的平面Map,还是通过简单的数据框转换进行管理
1.如果是flatmap,则是实现这类程序的一个很好的资源
2条答案
按热度按时间t5fffqht1#
可以使用
row_number
函数将唯一标识符分配给每行,并通过Window使用范围找到前一个ID
行。接收到的连接到自身的结构:字符串
输出量:
型
注意:使用没有分区的窗口,性能可能会很差。
kokeuurv2#
下面是我使用窗口函数的解决方案:
字符串
输出量:
型