Spark在读取有序文件时是否保留记录顺序?

Jas*_*ans 5 apache-spark

我正在使用Spark读取记录(在本例中为csv文件)并处理它们.这些文件已按某种顺序排列,但任何列都不反映此顺序(将其视为时间序列,但没有任何时间戳列 - 每行只是文件中的相对顺序).我想在我的Spark处理中使用这个排序信息,比如将行与前一行进行比较.我无法明确订购记录,因为没有订购列.

Spark是否维护从文件中读取的记录顺序?或者,有没有办法从Spark访问记录的文件顺序?

Ram*_*jan 9

是的,当从文件中读取时,Spark维护记录的顺序.但是当发生改组时,订单不会被保留.因此,为了保留顺序,您需要编程以便不在数据中进行混洗或创建seq.数字到记录并使用那些seq.处理时的数字.

在像Spark这样的分布式框架中,数据被分配到集群中以进行快速处理,肯定会发生数据的混乱.因此,最佳解决方案是为每行创建一个序列号,并使用该序号进行排序.


Mig*_*uel 5

随机整理数据时不保留顺序。但是,您可以在进行计算之前枚举行。如果您使用的是RDD,则有一个名为zipWithIndexRDD[T] => RDD[(T, Long)]的函数可以完全满足您的搜索要求。