java - 在没有嵌入 pig 脚本的情况下在 java 中运行 pig

标签 java apache-pig

我是 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 - 在没有嵌入 pig 脚本的情况下在 java 中运行 pig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152068/

相关文章:

csv - Pig 使用 PigStorage 加载 map (',' )

json - 无法使用Elephant Bird读取JSON文件

hadoop - Spark 和 HCatalog?

hadoop - 在本地或 mapreduce 模式下运行 pig 时出现问题

hadoop - 在单个节点上安装 PIG

java - 如何在 OSX 上运行用 Java 8 编写的 IntelliJ 插件?

java - EJB。无法注入(inject) session bean

java - UDP服务器——什么时候需要多线程

java - Android谷歌地图如何用fillColor绘制复杂的多边形

java - 如何从java应用程序在xterm shell中运行 "hg clone"命令?