无法在 Ubuntu 中 运行 Pig Embedded Java 程序
Unable to run Pig Embbeded Java Program in Ubuntu
最近我研究了 Apache Pig,并尝试构建 Pig-Embedded Java 程序。我从一个网站(来自 https://acadgild.com/blog/embedding-pig-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();
}
}
}
类路径错误。在 Linux 中,以 /
开头的路径是绝对路径,即从根目录开始。我假设你的意思是 -cp pigjar/pig.jar
。您还忘记包含包含您的代码的当前目录 .
;这会自动包含在类路径中,但前提是您实际上没有 -cp
参数或 CLASSPATH
环境变量。缺少 .
是导致此错误消息的原因,但您需要进行两项更改:
java -cp pigjar/pig.jar:. pig_embbed.pig_java
最近我研究了 Apache Pig,并尝试构建 Pig-Embedded Java 程序。我从一个网站(来自 https://acadgild.com/blog/embedding-pig-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();
}
}
}
类路径错误。在 Linux 中,以 /
开头的路径是绝对路径,即从根目录开始。我假设你的意思是 -cp pigjar/pig.jar
。您还忘记包含包含您的代码的当前目录 .
;这会自动包含在类路径中,但前提是您实际上没有 -cp
参数或 CLASSPATH
环境变量。缺少 .
是导致此错误消息的原因,但您需要进行两项更改:
java -cp pigjar/pig.jar:. pig_embbed.pig_java