我正在使用Spark读取记录(在本例中为csv文件)并处理它们.这些文件已按某种顺序排列,但任何列都不反映此顺序(将其视为时间序列,但没有任何时间戳列 - 每行只是文件中的相对顺序).我想在我的Spark处理中使用这个排序信息,比如将行与前一行进行比较.我无法明确订购记录,因为没有订购列.
Spark是否维护从文件中读取的记录顺序?或者,有没有办法从Spark访问记录的文件顺序?
是的,当从文件中读取时,Spark维护记录的顺序.但是当发生改组时,订单不会被保留.因此,为了保留顺序,您需要编程以便不在数据中进行混洗或创建seq.数字到记录并使用那些seq.处理时的数字.
在像Spark这样的分布式框架中,数据被分配到集群中以进行快速处理,肯定会发生数据的混乱.因此,最佳解决方案是为每行创建一个序列号,并使用该序号进行排序.
随机整理数据时不保留顺序。但是,您可以在进行计算之前枚举行。如果您使用的是RDD,则有一个名为zipWithIndex(RDD[T] => RDD[(T, Long)])的函数可以完全满足您的搜索要求。
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |