我编写了一个简单的PIG程序,用于分析AWS上的google n-gram数据集的小版本和修改版本。数据看起来像这样:
end()
并具有以下形式:
I am 1936 942 90
I am 1945 811 5
I am 1951 47 12
very cool 1923 118 10
very cool 1980 320 100
very cool 2012 994 302
very cool 2017 1820 612
我编写了以下程序来计算每本书ngram的出现次数:
n-gram TAB year TAB occurrences TAB books NEWLINE
但是,DUMP命令不起作用并出现以下错误:
inp = LOAD <insert input path here> AS (ngram:chararray, year:int, occurences:int, books:int);
filter_input = FILTER inp BY (occurences >= 400) AND (books >= 8);
groupinp = GROUP filter_input BY ngram;
sum_occ = FOREACH groupinp GENERATE FLATTEN(group) AS firstcol, SUM(occurences) AS socc , SUM(books) AS nbooks;
DUMP sum_occ;
我该如何解决这个问题?
答案 0 :(得分:1)
如果您使用的是旧版本,请更新它(应解决您的问题)
PIG脚本被懒惰地评估,所以除非你使用DUMP或STORE命令,否则你不会知道你的代码有什么问题。
当您运行代码时,它将再次抛出以下错误:
错误1025:无效的字段投影。模式中不存在投影字段[出现]:group:chararray,filter_input:bag {:tuple(ngram:chararray,year:int,occurences:int,books:int)}。
从
更改以下行sum_occ = FOREACH groupinp GENERATE FLATTEN(group) AS firstcol, SUM(occurences) AS socc , SUM(books) AS nbooks;
到
sum_occ = FOREACH groupinp GENERATE FLATTEN(group) AS firstcol, SUM(filter_input.occurences) AS socc, SUM(filter_input.books) AS nbooks;
将解决此错误。
答案 1 :(得分:0)
我没有足够的声誉来发表评论,所以写在这里。 我的猜测是你有未公开的报价。 你在“插入输入路径”部分有什么?用单引号括起来的路径?
答案 2 :(得分:0)
没有足够的评论来评论,所以发布在这里,是在脚本中编写上述猪语句或从grunt shell单独运行。您还可以简要介绍sum_occ关系背后的逻辑。