我是 pig 脚本、Hadoop、Hbase 的新手。这是我需要知道的。我想运行一个 pig 脚本,我不想将 pig 脚本嵌入到我的 java 程序中,而是想通过传递必要的 pig 脚本和参数(可能是参数文件)的任何 Pig Execution 方法来运行它。核心 pig 库或任何其他库是否提供了执行 pig 脚本的方式。我已经尝试过使用 java 运行时 exec 方法,我传递了一些带有空格分隔字符串的参数,所以我放弃了通过运行时 exec 方法调用 pig grunt 命令,因为它不是执行 pig 命令的正确方法。

最佳答案

您可以使用 org.apache.pig.PigServer 从 Java 程序运行 pig 脚本。

PigServer pigServer = new PigServer(ExecType.MAPREDUCE);
pigServer.registerScript("scripts/test.pig");

需要类路径上的“pig.properties”。
fs.default.name=hdfs://<namenode-hostname>:<port>
mapred.job.tracker=<jobtracker-hostname>:<port>

或者将 java.util.Properties 的实例传递给 PigServer 构造函数。
Properties props = new Properties();
props.setProperty("fs.default.name", "hdfs://<namenode-hostname>:<port>");
props.setProperty("mapred.job.tracker", "<jobtracker-hostname>:<port>");
PigServer pigServer = new PigServer(ExecType.MAPREDUCE, props);

关于java - 在java中运行pig而不嵌入pig脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11152068/

10-12 22:49