我在mapreduce模式下运行了一个示例猪脚本,并且运行成功。
我的猪脚:
allsales = load 'sales' as (name,price,country);
bigsales = filter allsales by price >999;
sortedbigsales = order bigsales by price desc;
store sortedbigsales into 'topsales';
现在,我正在尝试在eclipse中实现它(目前我正在使用库运行)。
有疑问:猪本地模式意味着我们需要默认安装hadoop?
IdLocal.java:
public class IdLocal {
public static void main(String[] args) {
try {
PigServer pigServer = new PigServer("local");
runIdQuery(pigServer, "/home/sreeveni/myfiles/pig/data/sales");
} catch (Exception e) {
}
}
public static void runIdQuery(PigServer pigServer, String inputFile)
throws IOException {
pigServer.registerQuery("allsales = load '" + inputFile+ "' as (name,price,country);");
pigServer.registerQuery("bigsales = filter allsales by price >999;");
pigServer.registerQuery("sortedbigsales = order bigsales by price desc;");
pigServer.store("sortedbigsales","/home/sreeveni/myfiles/OUT/topsalesjava");
}
}
控制台显示我的成功,但我的部分文件是空的。 为什么会这样?
答案 0 :(得分:0)
1)本地模式猪并不意味着你必须安装hadoop。你可以在没有hadoop和hdfs的情况下运行它。所有内容都将在您的计算机上执行单线程,默认情况下应该从本地文件系统读取/写入。
2)关于空输出,请确保您的输入文件存在于本地文件系统中,并且它具有“'价格”中的记录。大于999的字段。否则你可以将它们全部过滤掉。此外,pig默认为制表符分隔文件。您的inputFile标签是否分开?如果没有,那么您的架构定义将具有'名称'字段保存文件中的整行,并且'价格'和国家'将永远为空。
希望有所帮助