복붙노트

[HADOOP] S3 버킷에서 파일을로드 할 때 Spark에서 만드는 파티션은 몇 개입니까?

HADOOP

S3 버킷에서 파일을로드 할 때 Spark에서 만드는 파티션은 몇 개입니까?

파일이 기본적으로 HDFS에서로드 된 경우 spark은 블록 당 하나의 파티션을 만듭니다. 그러나 S3 버킷에서 파일을로드 할 때 어떻게 스파크가 파티션을 결정합니까?

해결법

  1. ==============================

    1.org.apache.hadoop.mapred.FileInputFormat.getSplits ()의 코드를 참조하십시오.

    org.apache.hadoop.mapred.FileInputFormat.getSplits ()의 코드를 참조하십시오.

    블록 크기는 S3 파일 시스템 구현에 따라 다릅니다 (FileStatus.getBlockSize () 참조). 예 : S3AFileStatus가 0으로 설정되면 FileInputFormat.computeSplitSize ()가 작동합니다.

    InputFormat이 분할 가능하지 않은 경우에도 분할을 얻지 못합니다. :)

  2. ==============================

    2.Spark는 S3를 블록 기반 파일 시스템처럼 취급하므로 HDFS 및 S3 입력에 대한 분할 규칙은 동일합니다. 기본적으로 한 블록 당 하나의 파티션이 생성됩니다. 생성 된 파티션의 수를 직접 조사해 보는 것이 좋습니다.

    Spark는 S3를 블록 기반 파일 시스템처럼 취급하므로 HDFS 및 S3 입력에 대한 분할 규칙은 동일합니다. 기본적으로 한 블록 당 하나의 파티션이 생성됩니다. 생성 된 파티션의 수를 직접 조사해 보는 것이 좋습니다.

    val inputRDD = sc.textFile("s3a://...")
    println(inputRDD.partitions.length)
    

    더 자세한 내용은 분할 규칙을 자세히 설명하는 내용을 참조하십시오.

  3. from https://stackoverflow.com/questions/37168716/how-many-partitions-does-spark-create-when-a-file-is-loaded-from-s3-bucket by cc-by-sa and MIT license