【问题标题】:Is SparkContext.newAPIHadoopFile API reading in and processing single file in parallel?SparkContext.newAPIHadoopFile API 是否并行读取和处理单个文件?
【发布时间】:2019-08-06 23:54:26
【问题描述】:

我需要使用 Spark 将一个巨大的未压缩文本文件 (>20GB) 读入 RDD。文件中的每条记录跨越多行(每条记录sc.textFile。我正在考虑使用带有自定义分隔符的SparkContext.newAPIHadoopFile。但是,由于文件相当大,我很好奇读取和解析是否会分布在多个 Spark 执行器或仅一个节点上?

文件内容如下:

record A
content for record A
content for record A
content for record A
record B
content for record B
content for record B
content for record B
...

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    这取决于您的输入格式,主要取决于压缩编解码器。例如。 gzip 不可拆分,但 Snappy 可以。

    如果它是可拆分的,Hadoop API 将根据它的拆分大小配置来处理它:

    minSize = Math.max(getFormatMinSplitSize(), getMinSplitSize(job));
    maxSize = getMaxSplitSize(job);
    

    每个文件

    blockSize = file.getBlockSize();
    splitSize = computeSplitSize(blockSize, minSize, maxSize); 
    

    那么每个拆分都会成为一个分区,并且会分布在整个集群中。

    【讨论】:

    • 我将这些文件存储在 S3 中。 S3 能否在 Spark 读入这些文件之前对其进行拆分?这些文件是未压缩的 txt 文件。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2012-11-30
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多