我在mapreduce模式下运行了一个示例pig脚本,它成功地运行了。
我的剧本:
allsales = load 'sales' as (name,price,country);
bigsales = filter allsales by price >999;
sortedbigsales = order bigsales by price desc;
store sortedbigsales into 'topsales';
现在,我正试图在eclipse中实现这一点(目前我正在使用库运行)。
一个疑问:pig本地模式意味着我们需要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");
}
}
控制台显示我成功了,但是我的部件文件是空的。为什么会这样?
1条答案
按热度按时间gcuhipw91#
1) 本地模式pig并不意味着必须安装hadoop。您可以在没有hadoop和hdfs的情况下运行它。一切都将在您的机器上单线程执行,默认情况下,它应该从您的本地文件系统进行读/写。
2) 关于空输出,请确保输入文件存在于本地文件系统中,并且在“price”字段中的记录大于999。否则你可能会把它们都过滤掉。另外,pig默认为制表符分隔的文件。“输入文件”选项卡是否分开?如果不是这样,那么您的模式定义将使“name”字段保留文件中的整行,“price”和“country”将始终为空。
希望有帮助