我正在学习Pig作业,并希望使用PigServer通过java代码在远程集群上运行pig脚本。任何人都可以指导我如何实现这一目标吗?提前谢谢。
答案 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.name
和mapred.job.tracker
,或者只需将它们添加到PigServer
构造函数中。