Spark:在不使用收集的情况下从多个文件中对RDD进行排序
Spark: Sorting RDD from multiple files without using collect
我在单个 RDD 中的某个目录中有 "uploaded" N 个文件
val data = sc.textFile("file:///myPath/*.txt")
例如我的 2 个文件各包含 5 行。
文件 1
A
B
C
D
E
文件 2
F
G
H
I
J
如果我将 sortBy 添加到我的代码中:
val sortedData = data.sortBy(x => x)
我没有得到排序后的数据,而是随机的 RDD:
J
B
C
E
A
D
G
F
H
I
收集可以帮助我,但是
1)对于大的RDD来说并不理想
2) 它 returns 不是 RDD,而是一个数组(我应该重新并行化)
提前致谢
FF
如果有多个rdds,可以使用union方法:
val rdd = rdd1.union(rdd2)
这将聚合两个 rdd,然后您可以对新的 rdd 进行排序。
但在你的情况下,你可以将所有数据读入同一个 rdd,然后对其进行排序。
编辑:
我创建了 2 个包含 file1 和 file2 的文件,并完成了以下操作:
我在单个 RDD 中的某个目录中有 "uploaded" N 个文件
val data = sc.textFile("file:///myPath/*.txt")
例如我的 2 个文件各包含 5 行。
文件 1
A
B
C
D
E
文件 2
F
G
H
I
J
如果我将 sortBy 添加到我的代码中:
val sortedData = data.sortBy(x => x)
我没有得到排序后的数据,而是随机的 RDD:
J
B
C
E
A
D
G
F
H
I
收集可以帮助我,但是
1)对于大的RDD来说并不理想
2) 它 returns 不是 RDD,而是一个数组(我应该重新并行化)
提前致谢
FF
如果有多个rdds,可以使用union方法:
val rdd = rdd1.union(rdd2)
这将聚合两个 rdd,然后您可以对新的 rdd 进行排序。
但在你的情况下,你可以将所有数据读入同一个 rdd,然后对其进行排序。
编辑:
我创建了 2 个包含 file1 和 file2 的文件,并完成了以下操作: