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

最佳答案

您必须使用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构造函数中。

10-01 05:15