Apache pig 猪聚集函数

Apache pig 猪聚集函数,apache-pig,Apache Pig,我的输入文件在下面 a,t1,1000,100 a,t1,2000,200 b,t2,1000,200 b,t2,5000,100 如何在上述文件中查找不同$0的计数 myinput=将“文件”加载为(a1:chararray,a2:chararray,金额:整数,费率:整数) 在上面的脚本之后需要做什么。 我也可以用这个不同的计数来划分其他的数,因为它是一个不同的关系。首先,你读取数据的方式是不正确的。如果您尝试转储“myinput”,您将看到在第一个字段(a1)中读取整行,而其他字段为空。

我的输入文件在下面

a,t1,1000,100
a,t1,2000,200
b,t2,1000,200
b,t2,5000,100
如何在上述文件中查找不同$0的计数

myinput=将“文件”加载为(a1:chararray,a2:chararray,金额:整数,费率:整数)

在上面的脚本之后需要做什么。
我也可以用这个不同的计数来划分其他的数,因为它是一个不同的关系。首先,你读取数据的方式是不正确的。如果您尝试转储“myinput”,您将看到在第一个字段(a1)中读取整行,而其他字段为空。 原因是您没有指定加载函数,默认函数是PigStorage()内置函数,它需要制表符分隔的文件(因此它忽略逗号!)。您需要通过using子句显式指定加载函数(例如PigStorage()),并传递参数:

myInput = LOAD file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as (amt:int), $3 as (rate:int);
接下来,要首先找到不同的$0,必须在单独的关系中提取字段$0。原因是DISTINCT语句对整个记录有效,而不是对单独的字段有效。

myField = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT myField;
现在distinctA1的结果是{(a)、(b)}。通过使用nowgroup all,您可以将所有记录组合在一起,然后剩下的就是对它们进行计数:

grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);
现在你高兴了。:) 完整代码:

myInput = LOAD 'file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as    (amt:int), $3 as (rate:int);
a1 = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT a1;
grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);

首先,您读取数据的方式是不正确的。如果您尝试转储“myinput”,您将看到在第一个字段(a1)中读取整行,而其他字段为空。 原因是您没有指定加载函数,默认函数是PigStorage()内置函数,它需要制表符分隔的文件(因此它忽略逗号!)。您需要通过using子句显式指定加载函数(例如PigStorage()),并传递参数:

myInput = LOAD file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as (amt:int), $3 as (rate:int);
接下来,要首先找到不同的$0,必须在单独的关系中提取字段$0。原因是DISTINCT语句对整个记录有效,而不是对单独的字段有效。

myField = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT myField;
现在distinctA1的结果是{(a)、(b)}。通过使用nowgroup all,您可以将所有记录组合在一起,然后剩下的就是对它们进行计数:

grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);
现在你高兴了。:) 完整代码:

myInput = LOAD 'file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as    (amt:int), $3 as (rate:int);
a1 = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT a1;
grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);

首先,您读取数据的方式是不正确的。如果您尝试转储“myinput”,您将看到在第一个字段(a1)中读取整行,而其他字段为空。 原因是您没有指定加载函数,默认函数是PigStorage()内置函数,它需要制表符分隔的文件(因此它忽略逗号!)。您需要通过using子句显式指定加载函数(例如PigStorage()),并传递参数:

myInput = LOAD file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as (amt:int), $3 as (rate:int);
接下来,要首先找到不同的$0,必须在单独的关系中提取字段$0。原因是DISTINCT语句对整个记录有效,而不是对单独的字段有效。

myField = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT myField;
现在distinctA1的结果是{(a)、(b)}。通过使用nowgroup all,您可以将所有记录组合在一起,然后剩下的就是对它们进行计数:

grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);
现在你高兴了。:) 完整代码:

myInput = LOAD 'file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as    (amt:int), $3 as (rate:int);
a1 = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT a1;
grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);

首先,您读取数据的方式是不正确的。如果您尝试转储“myinput”,您将看到在第一个字段(a1)中读取整行,而其他字段为空。 原因是您没有指定加载函数,默认函数是PigStorage()内置函数,它需要制表符分隔的文件(因此它忽略逗号!)。您需要通过using子句显式指定加载函数(例如PigStorage()),并传递参数:

myInput = LOAD file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as (amt:int), $3 as (rate:int);
接下来,要首先找到不同的$0,必须在单独的关系中提取字段$0。原因是DISTINCT语句对整个记录有效,而不是对单独的字段有效。

myField = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT myField;
现在distinctA1的结果是{(a)、(b)}。通过使用nowgroup all,您可以将所有记录组合在一起,然后剩下的就是对它们进行计数:

grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);
现在你高兴了。:) 完整代码:

myInput = LOAD 'file' using PigStorage(',');
myInput2 = FOREACH myInput GENERATE $0 as (a1:chararray), $1 as (a2:chararray), $2 as    (amt:int), $3 as (rate:int);
a1 = FOREACH myInput2 GENERATE a1;
distinctA1 = DISTINCT a1;
grouped = GROUP distinctA1 all;
countA1 = FOREACH grouped GENERATE COUNT(distinctA1);

您可以这样做:

myInput = LOAD 'file.txt' USING PigStorage(',') AS (a1:chararray,a2:chararray,amt:int,rate:int);
Data = GROUP myInput BY $0;
Data = FOREACH Data GENERATE $0;
Data = GROUP Data ALL;
Data = FOREACH Data GENERATE $0,COUNT($1);

注意:通过按$0分组,您可以做与distinct相同的事情,并且可以获得更好的性能;)

您可以这样做:

myInput = LOAD 'file.txt' USING PigStorage(',') AS (a1:chararray,a2:chararray,amt:int,rate:int);
Data = GROUP myInput BY $0;
Data = FOREACH Data GENERATE $0;
Data = GROUP Data ALL;
Data = FOREACH Data GENERATE $0,COUNT($1);

注意:通过按$0分组,您可以做与distinct相同的事情,并且可以获得更好的性能;)

您可以这样做:

myInput = LOAD 'file.txt' USING PigStorage(',') AS (a1:chararray,a2:chararray,amt:int,rate:int);
Data = GROUP myInput BY $0;
Data = FOREACH Data GENERATE $0;
Data = GROUP Data ALL;
Data = FOREACH Data GENERATE $0,COUNT($1);

注意:通过按$0分组,您可以做与distinct相同的事情,并且可以获得更好的性能;)

您可以这样做:

myInput = LOAD 'file.txt' USING PigStorage(',') AS (a1:chararray,a2:chararray,amt:int,rate:int);
Data = GROUP myInput BY $0;
Data = FOREACH Data GENERATE $0;
Data = GROUP Data ALL;
Data = FOREACH Data GENERATE $0,COUNT($1);
注意:通过按$0分组,您可以做与distinct相同的事情,并且可以获得更好的性能;)

瓦尔斯(上帝!)如果你有什么不懂或有更多的问题,请告诉我,我会尽力解释得更好如果你有什么不懂或有更多的问题,请告诉我,我会尽力解释得更好如果你有什么不懂或有更多的问题,请告诉我,我会尽力解释得更好如果你有什么不明白或有更多的问题,请告诉我,我会尽力解释得更好。