pig项目计数和直方图

kjthegm6  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(366)

这是一个由两部分组成的问题:
第1部分:
我正在使用cloudera pig编辑器来转换我的数据。该数据集来自美国专利引文数据集。第一栏是“引用”专利。剩下的数据是引用第一项专利的专利。
3858241 3634889,3557384,3398406,1324234,956203
3858242 3707004,3668705,3319261,1515701
3858243 3684611,3681785,3574238,3221341,3156927,3146465,2949611
3858244 2912700,2838924,2635670,2211676,17445,14040
3858245 3755824,3699969,3621837,3608095,3553737,3176316,2072303
3858246 3601877,3503079,3451067
3858247 3755824,3694819,3621837,2807431,1600859
我需要创建pig代码来计算第一个专利的引用次数。所以,我需要输出为:
3858241 5
3858242 4
3858243 7
3858244 6
3858245 7
3858246 3
3858247 6
第2部分:我需要使用pig脚本创建问题1输出的直方图。
任何帮助都将不胜感激。
谢谢

vcirk6k6

vcirk6k61#

这个脚本应该有用。

X = LOAD 'pigpatient.txt' using PigStorage(' ') AS (pid:int,str:chararray);

X1 = FOREACH X GENERATE pid,STRSPLIT(str, ',') AS (y:tuple());

X2 = FOREACH X1 GENERATE  pid,SIZE(y) as numofcitan;

dump X2;

X3 = group X2 by numofcitan;

Histograms = foreach X3 GENERATE group as numofcitan,COUNT(X2.pid); 

dump Histograms;

输入:
3858241 3634889,3557384,3398406,1324234,956203 3858242 3707004,3668705,3319261,1515701 3858243 3684611,3681785,3574238,3221341,3156927,3146465,2949611 3858244 2912700,2838924,2635670,2211676,17445,14040 3858245 3755824,3699969,3621837,3608095,3553737,3176316,2072303 3858246 3601877,3503079,3451067 3858247 3755824,3694819,3621837,2807431,1600859
结果:

(3858241,5)
  (3858242,4)
  (3858243,7)
  (3858244,6)
  (3858245,7)
  (3858246,3)
  (3858247,5)

直方图输出:

Number of citatatins,number of patients

(3,1)
(4,1)
(5,2)
(6,1)
(7,2)
hc2pp10m

hc2pp10m2#

@sravan k reddy的答案足够好,可以作为一个解决方案,但必须知道什么是直方图?
直方图是数据集的频率分布,给出了数据的统计信息。最常用的直方图类型有;等宽等深,称为等高或高度平衡。
在数据库工具中,等深度直方图是首选。例:甲骨文见
@sravan k reddy打算创建专利引用的等宽直方图。但是,为了创建直方图,必须对数据进行排序。这对直方图的构建至关重要。
如果您想创建大数据的直方图,请阅读本文并检查apachepig脚本。

相关问题