我尝试在一个带有spark master和2个worker的大文件上使用Apache Spark SQL数据框的聚合函数“first”和“last”。当我执行“第一次”和“最后”操作时,我期待从文件的最后一列;但看起来Spark正在从工作分区返回“第一个”或“最后一个”。
有没有办法在聚合函数中获得“真实”的第一个和最后一个值?
谢谢,
答案 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
生成的集合。这样您就可以获得要订购的列,并且您也不会更改源文件。