在apache pig中以特定格式转换数据

laawzig2  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(321)

我想在apachepig中将数据转换成特定的格式,这样我就可以在上面使用一个报告工具。
例如:

10:00,abc
10:00,cde
10:01,abc
10:01,abc
10:02,def
10:03,efg

输出应采用以下格式:

abc   cde  def  efg 
10:00   1      1    0    0
10:01   2      0    0    0
10:02   0      0    1    0

这里的主要问题是,一个值可能在一行中出现多次,具体取决于示例csv文件中可用的不同值,总共出现120次。
任何解决这个问题的建议都是非常受欢迎的。
谢谢gagan

nafvub8i

nafvub8i1#

尝试以下操作:

A = load 'data' using PigStorage(",") as (key:chararray,value:chararray);

B = foreach A generate key,(value=='abc'?1:0) as abc,(value=='cde'?1:0) as cde,(value=='efg'?1:0) as efg;

C = group B by key;

D = foreach C generate group as key, COUNT(abc) as abc, COUNT(cde) as cde, COUNT(efg) as efg;

这将为您获取特定键的特定值的发生次数。
编辑:刚刚注意到问题的限制120。如果不能超过120,请输入以下代码

E = foreach D generate key,(abc>120?"OVER 120":abc) as abc,(cde>120?"OVER 120":cde) as cde,(efg>120?"OVER 120":efg) as efg;

相关问题