PIG中的DUMP命令无法正常工作

时间:2018-03-28 08:12:36

标签: amazon-web-services hadoop apache-pig elastic-map-reduce

我编写了一个简单的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;

我该如何解决这个问题?

3 个答案:

答案 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关系背后的逻辑。