Java 存储并迭代已排序的文件hdfs/spark

Java 存储并迭代已排序的文件hdfs/spark,java,hadoop,apache-spark,hdfs,Java,Hadoop,Apache Spark,Hdfs,任务: 我在hdfs上有相当大的输入文件(假设每个文件为50GB)。我需要对它们进行排序,存储在某个地方(驱动程序/hdfs/其他什么?),然后迭代它们,直到满足特定条件 问题: 我如何才能最有效地实施它 我应该在哪里保存已排序的文件?如果在hdfs中,我如何将它们流式传输到spark,它们会按块加载吗 由于您的文件在HDFS中,所以只能从那里读取,并使用下面的代码对其进行排序。我不确定您想要什么类型的排序,但这段代码将根据代码中的值对整个数据进行排序 val data=sc.textFile(

任务:

我在hdfs上有相当大的输入文件(假设每个文件为50GB)。我需要对它们进行排序,存储在某个地方(驱动程序/hdfs/其他什么?),然后迭代它们,直到满足特定条件

问题:

我如何才能最有效地实施它


我应该在哪里保存已排序的文件?如果在hdfs中,我如何将它们流式传输到spark,它们会按块加载吗

由于您的文件在HDFS中,所以只能从那里读取,并使用下面的代码对其进行排序。我不确定您想要什么类型的排序,但这段代码将根据代码中的值对整个数据进行排序

val data=sc.textFile(“hdfs://user/AppMetaDataPayload.csv“”.map(line=>line.split(“,”)

//如果您想在排序后将其存储在内存中并仅从那里开始处理,请使用此选项。它将在内存中存储以供进一步处理时运行得更快

val d1=data.flatMap(u.sorted) d1.cache()

//如果要将文件保存在HDFS路径中,请使用此选项 data.flatMap(u.sorted).saveAsTextFile(“hdfs://user/result6.csv)


希望这将对您有所帮助。

我对从hdfs读取文件更感兴趣。如何仅读取hdfs文件的一部分?假设50gb的1mb文件在集群中被拆分。