我有一个20G的文本文件,我想要改变它的行。由于本地内存的限制,我想在spark上做。有人可以告诉我该怎么做吗?
P.S。我考虑过使用密钥对(random.random(), line)
,因此在保存文件时,spark会按random.random()
排序。我不知道它是否有效。
答案 0 :(得分:0)
假设Python,假设您的文本文件RDD被称为lines
,请尝试:
shuffled_RDD = lines.map(lambda line: (random.random(), line)).sortByKey.map(lambda line: line[1:])
这未经过测试,但逻辑应该有效。
答案 1 :(得分:0)
一个简单的解决方案是将文件作为数据框读取,然后使用orderBy
;
import org.apache.spark.sql.functions.rand
val shuffledDF = df.orderBy(rand())
这将随机化数据帧行的顺序。在此之后,只需再次保存为文本文件。