[HADOOP] Spark Streaming에서 출력 파일 이름 변경
HADOOPSpark Streaming에서 출력 파일 이름 변경
나는 논리가 진행되는 한 극단적으로 잘 수행되는 불꽃 작업을하고있다. 그러나 saveAsTextFile을 사용하여 s3 버킷에 파일을 저장하면 출력 파일의 이름은 part-00000, part-00001 등의 형식이됩니다. 출력 파일 이름을 변경하는 방법이 있습니까?
고맙습니다.
해결법
-
==============================
1.Spark에서는 saveAsNewAPIHadoopFile을 사용하고 hadoop 설정에서 mapreduce.output.basename 매개 변수를 설정하여 접두어 ( "접두사"부분 만)를 변경할 수 있습니다.
Spark에서는 saveAsNewAPIHadoopFile을 사용하고 hadoop 설정에서 mapreduce.output.basename 매개 변수를 설정하여 접두어 ( "접두사"부분 만)를 변경할 수 있습니다.
val hadoopConf = new Configuration() hadoopConf.set("mapreduce.output.basename", "yourPrefix") yourRDD.map(str => (null, str)) .saveAsNewAPIHadoopFile(s"$outputPath/$dirName", classOf[NullWritable], classOf[String], classOf[TextOutputFormat[NullWritable, String]], hadoopConf)
귀하의 파일 이름은 다음과 같습니다 : yourPrefix-r-00001
hadoop과 Spark에서는 하나 이상의 감속기 (hadoop) 또는 하나 이상의 파티션 (spark)을 가질 수 있기 때문에 출력에 하나 이상의 파일을 포함 할 수 있습니다. 그런 다음 각각에 대해 고유 한 이름을 보증해야합니다. 따라서 파일 이름의 마지막 부분에서 시퀀스 번호를 무시할 수 없습니다.
그러나 파일 이름을보다 잘 제어하려면 TextOutputFormat 또는 FileOutputFormat을 확장하고 getUniqueFile 메서드를 재정의 할 수 있습니다.
-
==============================
2.[Java의 솔루션]
[Java의 솔루션]
다음과 같이 말할 수 있습니다.
JavaRDD<Text> rows;
그리고 customPrefix-r-00000과 같은 파일에이 파일을 작성하려고합니다.
Configuration hadoopConf = new Configuration(); hadoopConf.set("mapreduce.output.basename", "customPrefix"); rows.mapToPair(row -> new Tuple2(null, row)).saveAsNewAPIHadoopFile(outputPath, NullWritable.class, Text.class, TextOutputFormat.class, hadoopConf);
그럼 !!
from https://stackoverflow.com/questions/37972381/change-output-file-name-in-spark-streaming by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 명령 줄을 사용하여 hdfs 분산 파일에서 총 줄 수 찾기 (0) | 2019.06.10 |
---|---|
[HADOOP] Mac OS에서 hadoop 실행 (0) | 2019.06.10 |
[HADOOP] Spark - 스파크 작업에 얼마나 많은 집행자와 코어가 할당되어 있습니까? (0) | 2019.06.09 |
[HADOOP] 하이브 테이블을 Google BigQuery로 이전 (0) | 2019.06.09 |
[HADOOP] java.lang.RuntimeException을 해결하는 방법 : PipeMapRed.waitOutputThreads () : 서브 프로세스가 코드 2로 실패 했습니까? (0) | 2019.06.09 |