当从s3读取多个文件时,spark zipWithIndex是否保持行的顺序

时间:2017-11-15 21:49:54

标签: apache-spark

我正在从s3加载多个文件,例如

s3://bucket1/111
s3://bucket2/222
...

假设文件111有行

line0
line1

和文件222有行

line2
line3

我打算使用

sc.textFile("s3://bucket1/111,s3://bucket2/222...").zipWithIndex()

加载所有这些文件并为每一行添加索引。

我的问题是索引是基于文件的顺序以及同一文件中同一文件中的顺序。

我希望订单像

(line0, 0)
(line1, 1)
(line2, 2)
(line3, 3)
...

1 个答案:

答案 0 :(得分:2)

是的。如有疑问请检查调试字符串:

scala> sc.textFile("README.md").zipWithIndex.toDebugString
res0: String =
(2) ZippedWithIndexRDD[2] at zipWithIndex at <console>:25 []
 |  README.md MapPartitionsRDD[1] at textFile at <console>:25 []
 |  README.md HadoopRDD[0] at textFile at <console>:25 []

No shuffle(单阶段)意味着保留订单。存储实施并不重要。