远程运行Pig作业

时间:2013-01-24 18:37:16

标签: java hadoop apache-pig

我正在学习Pig作业,并希望使用PigServer通过java代码在远程集群上运行pig脚本。任何人都可以指导我如何实现这一目标吗?提前谢谢。

2 个答案:

答案 0 :(得分:3)

可以使用上面的代码进行远程调用,即在cluster1&上安装Pig。调用是从集群外的应用程序服务器进行的吗?

答案 1 :(得分:1)

您必须使用PigServer类连接到群集,注册Pig查询并获取结果。您可以选择通过在磁盘上传递文件名来运行脚本,也可以直接编写Pig脚本行并将其作为Java字符串传递。

从文件名传递Pig脚本:

PigServer pig = new PigServer(ExecType.MAPREDUCE);
pig.registerScript("/path/to/test.pig");

将你的Pig程序作为字符串传递:

PigServer pig = new PigServer(ExecType.MAPREDUCE);
pig.registerQuery("A = LOAD 'something' USING PigLoader();");

您可以通过以下方式获取结果:

Iterator<Tuple> i = pig.openIterator("A");
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
while (i.hasNext()) {
    Integer val = DataType.toInteger(i.next().get(0));
    map.put(val, val);            
}

请注意,您需要在类路径中包含一些属性,即fs.default.namemapred.job.tracker,或者只需将它们添加到PigServer构造函数中。