최근 Apache Pig에 대한 연구를하고 돼지 내장형 Java 프로그램을 작성하려고합니다. 웹 사이트 (예 : https://acadgild.com/blog/embedding-pig-java/)에서 예제를 찾아서 복사하고 실행하기 전에 컴파일하려고합니다.Ubuntu에서 Pig Embeded Java 프로그램을 실행할 수 없습니다.
javac pig_java.java
오류 메시지없이 컴파일이 완료되었습니다. 내가 https://wiki.apache.org/pig/EmbeddedPig의 지시 사항에 따라 다음과 같은 명령을 실행할 때 :
java -cp /pigjar/pig.jar pig_embbed.pig_java
그것은 쇼 :
는Error: Could not find or load main class pig_embbed.pig_java
사람은 전에 이런 종류의 상황에 직면합니까? : '(
소스 코드 :..
package pig_embbed;
import java.util.Properties;
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
public class pig_java {
public static void main(String[] args) {
try {
PigServer pigServer = new PigServer(ExecType.MAPREDUCE);
runQuery(pigServer);
Properties props = new Properties();
props.setProperty("fs.default.name",
"hdfs://<hdfs_url>:<hdfs_port>");
}catch(Exception e) {
e.printStackTrace();
}
}
public static void runQuery(PigServer pigServer) {
try {
pigServer.registerQuery("input1 = LOAD '/user/centos7/EA/test.txt' as (line:chararray);");
pigServer.registerQuery("words = foreach input1 generate FLATTEN(TOKENIZE(line)) as word;");
pigServer.registerQuery("word_groups = group words by word;");
pigServer.registerQuery("word_count = foreach word_groups generate group, COUNT(words);");
pigServer.registerQuery("ordered_word_count = order word_count by group desc;");
pigServer.registerQuery("store ordered_word_count into '/user/EA/test_output';");
} catch(Exception e) {
e.printStackTrace();
}
}
}
Java 용 맨 페이지에는 classpath의 기본값은'.'입니다. 그러나 classpath를 지정하면'.'이 추가된다고하지는 않습니다. 'main' 클래스가'java -cp /pigjar/pig.jar : '이기 때문에 현재 디렉토리를 포함하고 싶습니다. pig_embbed.pig_java'. –
java -cp /pigjar/pig.jar :를 입력 한 후. pig_embbed.pig_java 표시 : 스레드 "main"의 예외 java.lang.NoClassDefFoundError : org/apache/pig/PigServer –
'.'이 필요했던 것처럼 보이지만 이제는'pig_embbed'라는 또 다른 오류를 찾을 수 있습니다. 이 클래스는 org.apache.pig.PigServer' 클래스를 찾을 수 없다. 나는 classpath의 다른 부분이 잘못되었다고 생각한다. 리눅스 경로와 비슷하지만,'/'로 인해/usr 경로가 절대 경로가 아니기 때문에 원하는 경로가 아닙니다. 예 : 'pig.jar'가 들어있는'pigjar' 디렉토리에 있다면'-cp pig.jar : .'를 사용하십시오; 만약 당신이'pigjar'의 부모 디렉토리에 있다면'-cp pigjar/pig.jar : .' –