任务:我在hdfs上有相当大的输入文件(假设每个50gb)。我需要对它们进行排序,存储在某个地方(驱动程序/hdfs/其他什么?),然后对它们进行迭代,直到满足特定条件。问题:我如何才能最有效地实施它?我应该在哪里保存已排序的文件?如果在hdfs中,我如何将它们流式传输到spark,它们将按块加载吗?
qacovj5a1#
由于您的文件是在hdfs中,所以只能从那里读取,并使用下面的代码对其进行排序。我不知道你想要什么类型的排序,但这段代码将根据代码中的值对整个数据进行排序val数据=sc.textfile(“hdfs://user/appmetadatapayload.csv“”.map(line=>line.split(“”,“”)//如果您希望在排序后将其存储在内存中,并仅从那里开始处理,请使用此选项。它将运行得更快,因为它存储在内存中以供进一步处理val d1=data.flatmap(u216;.sorted)d1.cache();//如果您想将文件保存在hdfs path data.flatmap(328;.sorted).saveastextfile(“hdfs://user/result6.csv")希望这对你有帮助。
1条答案
按热度按时间qacovj5a1#
由于您的文件是在hdfs中,所以只能从那里读取,并使用下面的代码对其进行排序。我不知道你想要什么类型的排序,但这段代码将根据代码中的值对整个数据进行排序
val数据=sc.textfile(“hdfs://user/appmetadatapayload.csv“”.map(line=>line.split(“”,“”)
//如果您希望在排序后将其存储在内存中,并仅从那里开始处理,请使用此选项。它将运行得更快,因为它存储在内存中以供进一步处理
val d1=data.flatmap(u216;.sorted)d1.cache();
//如果您想将文件保存在hdfs path data.flatmap(328;.sorted).saveastextfile(“hdfs://user/result6.csv")
希望这对你有帮助。