PIG项目计数和直方图

时间:2015-03-26 13:06:25

标签: apache-pig histogram frequency

这是一个两部分问题:

第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输出的直方图。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:0)

这个脚本应该可以工作。

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)

答案 1 :(得分:0)

@Sravan K Reddy的答案足以成为一个解决方案,但知道什么是直方图至关重要?

直方图是数据集的频率分布,并提供有关数据的统计信息。最常用的直方图类型是;等宽和等深,称为等高或高度平衡。

在数据库工具中,首选等深度直方图。例如:Oracle see

@Sravan K Reddy打算创建专利引用的等宽直方图。但是,为了创建直方图,必须对数据进行排序。这对于直方图构建至关重要。

如果您想创建大数据的直方图,请阅读this paper并检查Apache Pig Scripts