【问题标题】:Processing many large files处理许多大文件
【发布时间】:2015-08-01 00:50:56
【问题描述】:

我有一个包含大量大型压缩文本文件的目录(其中“大文件”是指解压缩后无法放入堆中的文件)。

我有一个要应用于每个文件的 reduce 操作。该操作需要按顺序处理行,并产生A 类型的小结果。

如何对目录中的所有文件应用此操作并获得(Path,A) 类型的RDD

换句话说,我正在寻找类似的东西:

sc.wholeTextFiles(dir).mapValues(operation)

...但是文件不需要存储在内存中。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    如果对它们进行 gzip 压缩,每个文件将得到一个分区,因此您可以使用以下内容:

    sc.textFile(dir).mapPartitions(it => it.reduce(operation))
    // mapPartitions gives you an iterator for each file, 
    // apply the reduce operation on this.
    

    【讨论】:

    • 谢谢,这确实有效。虽然依赖文件/分区映射有点不令人满意,但就像你说的,我现在“可以摆脱”它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2011-08-22
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多