[HADOOP] 하둡 오류 java.lang.NoSuchMethodException에서 사용자 정의 파티션 프로그램 : - <초기화> ()
HADOOP하둡 오류 java.lang.NoSuchMethodException에서 사용자 정의 파티션 프로그램 : - <초기화> ()
나는 하나의 감속기에 각각의 고유 한 키를 할당하는 사용자 정의 파티션 프로그램을 만들려고 노력하고 있습니다. 기본 HashPartioner 실패 후이 있었다 하둡과 함께 제공되는 기본 hashpartioner로 대체
나는 다음과 같은 오류가 계속. 그것은 생성자가 좀 연구를 수행에서 무엇을 말할 수에서 인수를 수신하지 함께 할 수있는 뭔가가. 그러나 이러한 맥락에서, 하둡과 함께가 아닌 인수는 프레임 워크에 의해 자동으로 전달됩니다? 나는 코드에서 오류를 찾을 수 없습니다
18/04/20 17:06:51 INFO mapred.JobClient: Task Id : attempt_201804201340_0007_m_000000_1, Status : FAILED
java.lang.RuntimeException: java.lang.NoSuchMethodException: biA3pipepart$parti.<init>()
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:587)
이것은 내 파티션 프로그램입니다 :
public class Parti extends Partitioner<Text, Text> {
String partititonkey;
int result=0;
@Override
public int getPartition(Text key, Text value, int numPartitions) {
String partitionKey = key.toString();
if(numPartitions >= 9){
if(partitionKey.charAt(0) =='0' ){
if(partitionKey.charAt(2)=='0' )
result= 0;
else
if(partitionKey.charAt(2)=='1' )
result= 1;
else
result= 2;
}else
if(partitionKey.charAt(0)=='1'){
if(partitionKey.charAt(2)=='0' )
result= 3;
else
if(partitionKey.charAt(2)=='1' )
result= 4;
else
result= 5;
}else
if(partitionKey.charAt(0)=='2' ){
if(partitionKey.charAt(2)=='0' )
result= 6;
else
if(partitionKey.charAt(2)=='1' )
result= 7;
else
result= 8;
}
} //
else
result= 0;
return result;
}// close method
}// close class
내 매퍼 서명
public static class JoinsMap extends Mapper<LongWritable,Text,Text,Text>{
public void Map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
내 감속기 서명
public static class JoinsReduce extends Reducer<Text,Text,Text,Text>{
public void Reduce (Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
메인 클래스 :
public static void main( String[] args ) throws Exception {
Configuration conf1 = new Configuration();
Job job1 = new Job(conf1, "biA3pipepart");
job1.setJarByClass(biA3pipepart.class);
job1.setNumReduceTasks(9);//***
job1.setOutputKeyClass(Text.class);
job1.setOutputValueClass(Text.class);
job1.setMapperClass(JoinsMap.class);
job1.setReducerClass(JoinsReduce.class);
job1.setInputFormatClass(TextInputFormat.class);
job1.setOutputFormatClass(TextOutputFormat.class);
job1.setPartitionerClass(Parti.class); //+++
// inputs to map.
FileInputFormat.addInputPath(job1, new Path(args[0]));
// single output from reducer.
FileOutputFormat.setOutputPath(job1, new Path(args[1]));
job1.waitForCompletion(true);
}
매퍼에 의해 방출 키는 다음과 같다 :
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
및 감속은 키를 기록하고 수신 값.
해결법
-
==============================
1.SOLVED
SOLVED
코멘트 (user238607)에 의해 제안 그냥 맵퍼 및 감속기 클래스처럼 내 파트 1 클래스에 정적 덧붙였다.
public static class Parti extends Partitioner<Text, Text> {
from https://stackoverflow.com/questions/49944554/custom-partitioner-in-hadoop-error-java-lang-nosuchmethodexception-init by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 기본 SerDE와 하이브 테이블 데이터로드 (0) | 2019.09.30 |
---|---|
[HADOOP] 사용하여 내 프로그램을 배포 할 때 java.lang.NoSuchMethodError 불꽃을 제출 (0) | 2019.09.30 |
[HADOOP] TEZ / 하이브에서 OOM (0) | 2019.09.30 |
[HADOOP] 어떻게 HDFS와 지역에서 ext4 파일 시스템에서 파일이 서로 일치합니까? (0) | 2019.09.30 |
[HADOOP] 어떻게 csv 파일에 청사진 JSON 파일을 변환하는? (0) | 2019.09.30 |