我正在学习 Pig 作业,并希望使用 PigServer 通过 java 代码在远程集群上运行 pig 脚本。任何人都可以指导我如何实现这一点?提前感谢。
上面的代码可以用来做一个远程调用,即猪安装在 cer1 & amp;调用是从集群外部的应用程序服务器进行的?
您必须使用PigServer
类连接到集群,注册 Pig 查询并获得结果。您可以选择通过在磁盘上传递文件名来运行脚本,也可以直接编写 Pig 脚本行并将其作为 Java 字符串传递。
要从文件名传递 Pig 脚本:
PigServer pig = new PigServer(ExecType.MAPREDUCE);
pig.registerScript("/path/to/test.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
构造函数中。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(33条)