【问题标题】:Store and iterate over sorted file hdfs/spark存储和迭代排序的文件 hdfs/spark
【发布时间】:2017-06-13 23:44:07
【问题描述】:

任务:

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

问题:

我怎样才能最有效地实施它?

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

【问题讨论】:

    标签: java hadoop apache-spark hdfs


    【解决方案1】:

    由于您的文件位于 HDFS 中,因此只能从那里读取并使用以下代码对其进行排序。我不确定您想要哪种类型的排序,但此代码将根据代码中存在的值对您的整个数据进行排序

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

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

    val d1=data.flatMap(_.sorted) d1.cache();

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

    希望这会对你有所帮助。

    【讨论】:

    • 我对从 hdfs 读取文件更感兴趣。如何只读取 hdfs 文件的一部分?假设 50gb 文件中的 1mb 在集群中拆分。
    猜你喜欢
    • 2023-03-08
    • 2015-08-18
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2016-12-25
    • 2018-05-22
    相关资源
    最近更新 更多