Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
长类型字段的Order by在Spark Java数据集中不起作用_Java_Apache Spark_Apache Spark Dataset - Fatal编程技术网

长类型字段的Order by在Spark Java数据集中不起作用

长类型字段的Order by在Spark Java数据集中不起作用,java,apache-spark,apache-spark-dataset,Java,Apache Spark,Apache Spark Dataset,我有一个数据集,下面是Employee对象中的字段 class Employee {String loginSession, Long loginDateTimeMilli, String name , string empType, String location} 我必须对数据集执行以下操作 group by loginSession order by loginDateTimeMill 下面是我如何执行相同的操作 ds.orderBy(col('loginDateTim

我有一个数据集,下面是Employee对象中的字段

class Employee {String loginSession, Long loginDateTimeMilli, String name , string empType, String location}
我必须对数据集执行以下操作

    group by loginSession
    order by loginDateTimeMill
下面是我如何执行相同的操作

ds.orderBy(col('loginDateTimeMill').asc())
.groupBy(col('loginSession'))
.agg(collect_list(struct) ...) ... 
这给了我以下输出(示例)

以下是预期产出

[[loginSession, WrappedArray([name1,emptype1,location1,loginDateTimeMilli_1]
                            ,[name1,emptype1,location1,loginDateTimeMilli_2]
                            ,[name1,emptype1,location1,loginDateTimeMilli_3])]
不知道为什么它不起作用。我做错什么了吗? 任何帮助都将不胜感激。 我正在为spark使用JavaAPI


编辑:我正在为每个登录会话创建文件,该会话工作正常,唯一的问题是详细信息没有按顺序排序。此外,问题并不在于生成的所有文件,它只在某些情况下出现。

这是意料之中的,
groupBy
将不会由于无序而保留顺序。您应该将
logindamelli
打包为结构中的第一个元素,然后使用
sort\u数组
。或者,使用数据集API(
groupByKey
mapGroups
)进行聚合,这取决于您下一步打算做什么,只需按会话和日期排序,并根据顺序进行分组可能更容易。@RaphaelRoth:
LoginDataMemilli
是包装数组中的第一列。如果
groupBy
没有保存订单,那么在
orderBy
中传递列
loginSession
是否会像@realponsum>所建议的那样工作?我的建议很好,这仅取决于您对结果数据所做的操作。也就是说,如果你正在收集它给司机或做其他事情。如果您想进一步了解这一点,您应该将该信息添加到问题中。@realpoint已用Edit更新@RaphaelRoth:我已经尝试过使用
排序数组
,但在聚合方面也没有运气,我有很多列。
[[loginSession, WrappedArray([name1,emptype1,location1,loginDateTimeMilli_1]
                            ,[name1,emptype1,location1,loginDateTimeMilli_2]
                            ,[name1,emptype1,location1,loginDateTimeMilli_3])]