我正在学习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.name
和mapred.job.tracker
,或者可以将它们添加到PigServer
构造函数中。