[HADOOP] 스파크 dataframe 쓰기를 사용하는 동안 어떻게 자동으로이 numRepartition을 계산
HADOOP스파크 dataframe 쓰기를 사용하는 동안 어떻게 자동으로이 numRepartition을 계산
나는 마루 분할 표를 하이브 dataframe를 작성했을 때
df.write.partitionBy("key").mode("append").format("hive").saveAsTable("db.table")
그것은 HDFS에서 블록을 많이 만들 것입니다, 블록의 각각의 데이터 만 작은 크기를 가지고있다.
나는 그것이 블록을 만들고 각 불꽃 하위 작업으로가는 방법을 이해, 다음에 데이터를 기록.
또한 블록의 수는 하둡의 성능을 증가뿐만 아니라 임계 값에 도달 한 후 성능이 저하됩니다, 이해합니다.
내가 자동 설정 numPartition하려는 경우, 사람이 좋은 생각을 가지고 있습니까?
numPartition = ??? // auto calc basing on df size or something
df.repartition("numPartition").write
.partitionBy("key")
.format("hive")
.saveAsTable("db.table")
해결법
-
==============================
1.기본 스파크에 의해 셔플 작업 (200 개) 파티션을 생성합니다. 그래서, 200 개 파일 / 블록 (파일 크기가 작은 경우) HDFS에 기록됩니다.
기본 스파크에 의해 셔플 작업 (200 개) 파티션을 생성합니다. 그래서, 200 개 파일 / 블록 (파일 크기가 작은 경우) HDFS에 기록됩니다.
구성 아래 사용하여 스파크에서 데이터를 기반으로 셔플 이후에 생성되는 파티션의 수를 구성합니다 :
spark.conf.set("spark.sql.shuffle.partitions", <Number of paritions>)
예 : spark.conf.set ( "spark.sql.shuffle.partitions", "5"), 그래서 5 개 파티션을 생성합니다 스파크와 5 개 개의 파일이 HDFS에 기록됩니다.
from https://stackoverflow.com/questions/51814680/how-to-auto-calculate-numrepartition-while-using-spark-dataframe-write by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 맵리 듀스를 배울 수있는 가장 좋은 방법은 [폐쇄] (0) | 2019.10.02 |
---|---|
[HADOOP] java.lang.NoSuchMethodError 않는 한 : org.apache.hadoop.conf.Configuration.reloadExistingConfigurations (0) | 2019.10.02 |
[HADOOP] 자바 S3에서 뭐 이따위로 압축 파일을 읽는 방법 (0) | 2019.10.02 |
[HADOOP] 루프 사용하여 명령에 인수를 전달합니다 (0) | 2019.10.02 |
[HADOOP] 하둡에서 OOM 예외가 아이를 감소 (0) | 2019.10.02 |