[HADOOP] hadoop 스트리밍을위한 분할 자 지정 방법
HADOOPhadoop 스트리밍을위한 분할 자 지정 방법
나는 아래와 같은 커스텀 파티셔너를 가지고있다 :
import java.util.*;
import org.apache.hadoop.mapreduce.*;
public static class SignaturePartitioner extends Partitioner<Text,Text>
{
@Override
public int getPartition(Text key,Text value,int numReduceTasks)
{
return (key.toString().Split(' ')[0].hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}
}
아래처럼 hadoop 스트리밍 매개 변수를 설정했습니다.
-file SignaturePartitioner.java \
-partitioner SignaturePartitioner \
그런 다음 오류가 발생합니다. 클래스를 찾을 수 없습니다.
문제가 뭔지 아십니까?
친애하는,
해결법
-
==============================
1.나는 똑같은 문제에 직면했지만 많은 연구 끝에 해결할 수 있었다.
나는 똑같은 문제에 직면했지만 많은 연구 끝에 해결할 수 있었다.
근본 원인은 스트리밍 중입니다.-2.6.0.jar은 mapred api가 아니라 mapred api를 사용합니다. 또한 Partitioner 인터페이스를 구현하고 Partitioner 클래스를 확장하지 마십시오. 다음은 나를 위해 일했다 :
import java.io.IOException; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.Partitioner; import org.apache.hadoop.mapred.JobConf;` public class Mypartitioner implements Partitioner<Text, Text> {` public void configure(JobConf job) {} public int getPartition(Text pkey, Text pvalue, int pnumparts) { if (pkey.toString().startsWith("a")) return 0; else return 1 ; } }
Mypartitioner를 컴파일하고 jar 파일을 만든 다음,
bin/hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.6.0.jar -libjars /home/sanjiv/hadoop-2.6.0/Mypartitioner.jar -D mapreduce.job.reduces=2 -files /home/sanjiv/mymapper.sh,/home/sanjiv/myreducer.sh -input indir -output outdir -mapper mymapper.sh -reducer myreducer.sh -partitioner Mypartitioner
-
==============================
2.-file 옵션을 사용하면 Hadoop 프레임 워크가 필요한 모든 노드에서 파일을 사용할 수 있습니다. Java 파일 이름이 아니라 클래스 이름을 가리켜 야합니다.
-file 옵션을 사용하면 Hadoop 프레임 워크가 필요한 모든 노드에서 파일을 사용할 수 있습니다. Java 파일 이름이 아니라 클래스 이름을 가리켜 야합니다.
from https://stackoverflow.com/questions/13191468/how-to-specify-the-partitioner-for-hadoop-streaming by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Spark : HDFS의 기존 경로에 RDD 저장 (0) | 2019.06.30 |
---|---|
[HADOOP] PySpark 설치 오류 (0) | 2019.06.30 |
[HADOOP] pod에서 ssh를 사용할 수 있습니까? (0) | 2019.06.30 |
[HADOOP] hbase 스캔을하는 동안 예외가 발생했습니다. (0) | 2019.06.30 |
[HADOOP] Hadoop Reducer : 어떻게 투기 실행을 사용하여 여러 디렉토리로 출력 할 수 있습니까? (0) | 2019.06.30 |