【发布时间】:2020-02-18 07:16:33
【问题描述】:
所以我使用结构化流将一些 json 数据从 kafka 推送到 Spark。数据,以字典的形式,有一个字段“时间戳”。在解析 json 并为每个键获取单独的列之后,我注意到时间戳字段不在它被推送到 kafka 集群的顺序中,即
+----------+
| Timestamp|
+----------+
| 1 |
| 2 |
| 6 | <--
| 4 |
| 5 |
| 7 | <--
+----------+
有什么方法可以确保数据保持顺序?我能想到的一件事是在带有 output_mode="complete" 的时间戳上使用 orderby。还有其他有效的替代方案吗? 谢谢。
【问题讨论】:
-
Kafka 不按时间排序,仅在分区内...您的主题有多少个分区?您是否在这里一次查看多个分区?你唯一的选择是在 Spark 中订购,假设你真的需要
-
不知道有多少个分区,但它保留在默认配置中。能否请您指导我在 python 结构化流中排序的任何 Spark 示例?
-
我可以将你链接到 pyspark sql orderby 函数,但我相信你可以自己找到
标签: apache-spark apache-kafka apache-spark-sql spark-structured-streaming