[HADOOP] newAPIHadoopFile에 대한 파티션 수를 설정하는 방법은 무엇입니까?
HADOOPnewAPIHadoopFile에 대한 파티션 수를 설정하는 방법은 무엇입니까?
"old"SparkContext.hadoopFile은 파티션 수에 대한 힌트 인 minPartitions 인수를 사용합니다.
def hadoopFile[K, V](
path: String,
inputFormatClass: Class[_ <: InputFormat[K, V]],
keyClass: Class[K],
valueClass: Class[V],
minPartitions: Int = defaultMinPartitions
): RDD[(K, V)]
그러나 SparkContext.newAPIHadoopFile에는 이러한 인수가 없습니다.
def newAPIHadoopFile[K, V, F <: NewInputFormat[K, V]](
path: String,
fClass: Class[F],
kClass: Class[K],
vClass: Class[V],
conf: Configuration = hadoopConfiguration): RDD[(K, V)]
사실 mapred.InputFormat.getSplits는 힌트 인수를 취하지 만 mapreduce.InputFormat.getSplits는 JobContext를 사용합니다. 새 API를 통해 분할 수에 영향을 미치는 방법은 무엇입니까?
Configuration 객체에 mapreduce.input.fileinputformat.split.maxsize 및 fs.s3n.block.size를 설정하려고했지만 아무 효과가 없습니다. 내가 s3n에서 4.5 기가 바이트 파일을로드하려고하고, 그것은 하나의 작업에로드 가져옵니다.
https://issues.apache.org/jira/browse/HADOOP-5861은 관련이 있지만, 기본 블록 크기가 64MB이므로 두 개 이상의 분할을 이미보아야한다고 제안합니다.
해결법
-
==============================
1.newApiHadoopFile 함수를 사용하면 mapred.max.split.size를 설정할 수 있도록 구성 객체를 전달할 수 있습니다.
newApiHadoopFile 함수를 사용하면 mapred.max.split.size를 설정할 수 있도록 구성 객체를 전달할 수 있습니다.
겉으로보기에는 새로운 옵션이 없기 때문에 매핑 된 네임 스페이스에 있지만 새 API가 변수를 존중할 것이라고 생각합니다.
from https://stackoverflow.com/questions/25441524/how-to-set-the-number-of-partitions-for-newapihadoopfile by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 복사하지 않고 데이터를 직접 hdfs로 스트리밍 (0) | 2019.07.08 |
---|---|
[HADOOP] 하이브 서비스, HiveServer2 & MetaStore 서비스? (0) | 2019.07.08 |
[HADOOP] 스파크 스트리밍 출력 지속 (0) | 2019.07.08 |
[HADOOP] 한 번에 여러 행을 읽는 Hadoop (0) | 2019.07.08 |
[HADOOP] hadoop 대 teradata 차이점은 무엇입니까? (0) | 2019.07.08 |