[HADOOP] 스파크 스트리밍 빈 파티션에 대한 쓰기 파일을 피하십시오
HADOOP스파크 스트리밍 빈 파티션에 대한 쓰기 파일을 피하십시오
나는 카프카 파티션의 데이터 (파티션 당 하나의 집행자)를 읽어 스파크 스트리밍 작업을해야합니다. 나는 HDFS로 변환 값을 저장하지만, 빈 파일 생성을 방지해야 할 필요가있다. 나는 IsEmpty 함수를 사용하려하지만, 모든 파티션이 비어있는 경우이 도움이되지 않습니다.
추신 파티션의 성능 저하로 인해 수용 가능한 해결책이 아니다.
해결법
-
==============================
1.이 코드는 PairRDD 작동합니다.
이 코드는 PairRDD 작동합니다.
텍스트 코드 :
val conf = ssc.sparkContext.hadoopConfiguration conf.setClass("mapreduce.output.lazyoutputformat.outputformat", classOf[TextOutputFormat[Text, NullWritable]] classOf[OutputFormat[Text, NullWritable]]) kafkaRdd.map(_.value -> NullWritable.get) .saveAsNewAPIHadoopFile(basePath, classOf[Text], classOf[NullWritable], classOf[LazyOutputFormat[Text, NullWritable]], conf)
아 브로에 대한 코드 :
val avro: RDD[(AvroKey[MyEvent], NullWritable)]) = .... val conf = ssc.sparkContext.hadoopConfiguration conf.set("avro.schema.output.key", MyEvent.SCHEMA$.toString) conf.setClass("mapreduce.output.lazyoutputformat.outputformat", classOf[AvroKeyOutputFormat[MyEvent]], classOf[OutputFormat[AvroKey[MyEvent], NullWritable]]) avro.saveAsNewAPIHadoopFile(basePath, classOf[AvroKey[MyEvent]], classOf[NullWritable], classOf[LazyOutputFormat[AvroKey[MyEvent], NullWritable]], conf)
from https://stackoverflow.com/questions/53538677/avoid-write-files-for-empty-partitions-in-spark-streaming by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 분산 캐시를 통해 매퍼에서 파일을 액세스 (0) | 2019.10.06 |
---|---|
[HADOOP] 카프카는 연결 - HDFS와 ExtractTopic 변환 싱크 커넥터가 NullPointerException이 발생합니다 (0) | 2019.10.06 |
[HADOOP] HDFS -du 결과를 이해하는 방법 (0) | 2019.10.06 |
[HADOOP] 입력으로 이미지와 맵리 듀스 작업을 만듭니다 (0) | 2019.10.06 |
[HADOOP] 어떻게 데이터 노드에 블록 배치 정책을 선택하려면? (0) | 2019.10.06 |