【发布时间】:2019-12-03 14:28:01
【问题描述】:
在 spark 中使用 group by 时可以得到Dataset<List<Row>>
作为输出。这里 Row 是原始行。
Dataset<<List<Row>> output = dataset.groupBy("key");
如果使用聚合并且collect_list then 在输出行中,则无法保证列表格式的值是有序的。因此,在我的情况下,这不是一个好的解决方案。
例如:聚合输出。但是不能保证设定值的顺序。
+-----+----------------------------+
|item1|set |
+-----+----------------------------+
|1 |[[5,3], [4,1], [3,2], [2,2]]|
|2 |[[4,1], [1,2], [5,2], [3,1]]|
+-----+----------------------------+
请告知是否有办法在不使用 pojos 的情况下获得 Dataset<List<Row>> 的输出。 (例如基于 pojo 的解决方案:FlatMapGroupsWIthStateFunction)
【问题讨论】:
-
我什至会说这是真的“不能保证有序” 对于任何分布式大型数据集问题。您希望对聚合值应用什么顺序?为什么不使用任何sort* 标准函数?
标签: java apache-spark spark-streaming spark-structured-streaming