SQL数据帧首先和最后没有返回“真实”的第一个和最后一个值

时间:2016-01-22 23:53:05

标签: apache-spark aggregate-functions apache-spark-sql spark-dataframe

我尝试在一个带有spark master和2个worker的大文件上使用Apache Spark SQL数据框的聚合函数“first”和“last”。当我执行“第一次”和“最后”操作时,我期待从文件的最后一列;但看起来Spark正在从工作分区返回“第一个”或“最后一个”。

有没有办法在聚合函数中获得“真实”的第一个和最后一个值?

谢谢,

1 个答案:

答案 0 :(得分:1)

是。这可能取决于你的意思是第一个“真正的”第一个和最后一个值。例如,如果您正在处理带有时间戳的数据,并且“真实”,则第一个值指的是最旧的记录,只需orderBy根据时间的数据获取第一个值。

当您说When I do the "first" and "last" operations I am expecting back the last column from the file时,我知道您实际上指的是文件中的第一行/最后一行数据。如果我误以为,请纠正我。

感谢。

编辑:

您可以在单个分区中读取文件(通过设置numPartitions = 1),然后zipWithIndex,最后parallize生成的集合。这样您就可以获得要订购的列,并且您也不会更改源文件。