在Java中运行Pig而不嵌入Pig脚本 [英] Run pig in java without embedding pig script

查看:72
本文介绍了在Java中运行Pig而不嵌入Pig脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am new to pig script, Hadoop, Hbase. Here's what i need to know. I wanted to run a pig script, I don't want to embed the pig script in my java program and wanted to run it through any Pig Execution methods passing the necessary pig script and parameters (possibly parameter file). Does the core pig library or any other library provides that way to execute a pig script. I already tried with java run-time exec method, I pass some parameters with space separated strings so i dropped calling pig grunt command through run-time exec method since it is not the proper way to execute pig commands.

推荐答案

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

You can use org.apache.pig.PigServer to run pig scripts from Java programs.

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

在类路径上需要"pig.properties".

Requires 'pig.properties' on classpath.

fs.default.name=hdfs://<namenode-hostname>:<port>
mapred.job.tracker=<jobtracker-hostname>:<port>

或将java.util.Properties的实例传递给PigServer构造函数.

Or pass an instance of java.util.Properties to PigServer constructor.

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而不嵌入Pig脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆