2016-12-07 1 views
0

DataFrameWriter를 사용하여 S3에 쓰고있는 데이터 세트가 있습니다. Parquet을 사용하고 있으며 256 개의 고유 한 값을 가진 열에 partitionBy 호출을 수행하고 있습니다. 잘 작동하지만 데이터 세트를 작성하고 다른 작업을 읽는 데 시간이 필요합니다. 디버깅에서 필자는호출이 256 개의 파티션을 지정 했음에도 불구하고 작성자가 접미어 당 하나씩 256 개의 파일 만 출력한다는 것을 알아 챘습니다. 각 partitionBy 값에 대한 파일 출력 수를 늘릴 수있는 방법이 있습니까?Spark에서 DataFrameWriter를 사용하여 출력 파일 수를 변경하십시오.

myDS = myDS.repartition(256, functions.col("suffix")); 
myDS.write().partitionBy("suffix").parquet(String.format(this.outputPath, "parquet", this.date)); 

답변

1

내 코드에 문제가 내 repartition 전화에 열을 지정하는 존재였다

내 코드처럼 보인다. repartition에서 열을 제거하면 문제가 해결되었습니다.

출력 파일 수와 partitionBy 값 사이의 관계는 파티션 수와 직접 관련이 있습니다. 256 개의 별개의 partitionBy 값이 있다고 가정하십시오. 작성자 앞에 repartition(5) 전화를 걸면 partitionBy 값당 최대 5 개의 출력 파일이 만들어집니다. 총 출력 파일 수는 1280을 초과하지 않습니다 (주어진 partitionBy 값에 대해 많은 데이터가없는 경우 더 적을 수 있지만).

관련 문제