2017-12-26 4 views
0

나는 큰 테이블을 읽고 100,000 개의 작업을 생성하기 위해 spark-sql을 사용합니다.스파크 작업이 너무 많습니다.

num_of_partitions를 설정할 수 있지만 작은 테이블과 동일한 작업을 수행 할 수 있습니다.

Is there any way to limit the size of each partition ? 

답변

0

현재 Spark는 파티션 크기 제한을 지원하지 않습니다. 작업 수를 줄이려면 파티션 번호를 더 작은 숫자로 설정해야합니다.

이제 일반적으로 사용되는 트릭은 데이터 크기에 따라 파티션 수를 동적으로 설정하는 것입니다. 일반적으로 파티션을 HDFS 블록 크기 (128MB)와 동일하게 지정하려고합니다. 데이터의 각 행의 크기를 알고있는 경우 파티션 당 유지할 행 수를 계산할 수 있습니다. 그 값이 그럼 당신은

dataframe.count/x 
+0

가되도록 num_of_partitions을 설정할 수 있습니다하지만 다른 테이블에 동일한 코드를 사용하려면 X를

라고하자, 큰 테이블 작은 테이블보다 더 많은 파티션이 필요합니다. – no123ff

+0

dataframe.count/x는 다른 파티션 번호를 설정합니다. 이제는 각 테이블의 행 크기 (x)를 알아 내야합니다. 이 숫자는 매개 변수화 될 수 있습니다. 이 경우 동일한 코드가 크고 작은 테이블에서 작동합니다. –

+0

아, 무슨 뜻인지는 알지만 ... 숫자가 너무 커지면 카운트가 너무 비쌀 것입니다. 그렇죠? – no123ff