查看: 2575|回复: 19

[笔记] 第4周作业

  [复制链接]
论坛徽章:
4
Hadoop研习者初级
日期:2014-01-28 12:16:34Hadoop研习者中级
日期:2014-09-19 14:12:58树莓派
日期:2014-09-19 15:22:08Oracle研习者初级
日期:2015-05-07 11:38:07
发表于 2014-1-5 15:26 | 显示全部楼层 |阅读模式
本帖最后由 ningzhisheng 于 2014-1-5 15:27 编辑

1 可以看到课程上的程序并没有按照 PPT 的预期结果一般按照时间段+地点的方式给出输出, 请修改给出的代码, 使得输出为正确的结果.
1)将数据文件上传到集群
1.png
2)启动pig
2.png
3)加载数据:
grunt> data = LOAD'/user/Hadoop/input/PigData.txt' USING PigStorage('|') AS  
>> (imsi:chararray,time:chararray,loc:chararray);
4)注册函数并定义别名:
grunt> register/usr/pig-0.12.0/contrib/piggybank/Java/piggybank.jar;
grunt> register/usr/pig-0.12.0/contrib/piggybank/java/joda-time-2.1.jar;
grunt> register/usr/pig-0.12.0/lib/datafu-1.0.0.jar;
grunt>define CustomFormatToISO org.apache.pig.piggybank.evaluation.datetime.convert. CustomFormatToISO();
5)格式化时间 便于链接时间:
grunt>toISO = foreach data generate imsi , SUBSTRING(time,11,16) astimeflag:chararray,CustomFormatToISO(SUBSTRING(time,0,13) , 'YYYY-MM-dd HH') astime:chararray,loc;
6)数据分组:
grunt>grp = GROUP toISO BY imsi;
7)定义马科夫链函数别名并获取连续数据:
grunt>define MarkovPairs datafu.pig.stats.MarkovPairs();
grunt>pairs =FOREACH grp
{
         sorted = ORDER toISO BY time;
         pair = MarkovPairs(sorted);
         GENERATE FLATTEN(pair) AS(data:tuple(imsi,time,loc),next:tuple(imsi,time,loc) );
}
8)展开数据:
grunt>prj = FOREACHpairs GENERATE data.imsi AS imsi,data.time AS time,next.time ASnext_time,data.loc AS loc,next.loc AS next_loc;
9)处理时间不连续的数据
grunt>define ISODaysBetweenorg.apache.pig.piggybank.evaluation.datetime.diff.ISODaysBetween();
grunt>flt = FILTER prj BYISODaysBetween(next_time, time) == 0L;
10)计算每一个位置的总数
grunt>total_count =FOREACH (GROUP flt BY loc) GENERATE group AS loc,COUNT(flt) AS total;
11)计算每一对位置的数目
grunt>pairs_count =FOREACH (GROUP flt by (loc,next_loc) ) GENERATE FLATTEN(group) AS(loc,next_loc),COUNT(flt) AS cnt;
12)进行表连接 计算概率p(A|B)=P(A,B)/P(B)
grunt>jnd = JOINpairs_count BY loc,total_count BY loc USING 'replicated';
grunt>prob =FOREACH jnd GENERATE pairs_count::loc AS loc, pairs_count::next_loc ASnext_loc,(double)cnt/(double)total AS probability;
13)取top3
grunt>top3 =FOREACH (GROUP prob BY loc)
{
         sorted = ORDER prob BY probabilityDESC;
         top = LIMIT sorted 3;
         GENERATE FLATTEN(top);
};
14)存储数据:
grunt>STORE top3INTO 'pigoutput';
3.png
15)查看结果:
grunt>cat pigoutput;
00-09   中山大学        广州信息港      0.6
00-09   中山大学        珠江新城        0.4
09-17   广州信息港      体育中心        1.0
回复

使用道具 举报

论坛徽章:
7
Hadoop研习者初级
日期:2014-01-28 10:54:37Oracle研习者初级
日期:2014-09-19 13:48:41Hadoop研习者中级
日期:2014-09-19 14:12:58Oracle研习者中级
日期:2014-09-19 14:29:20树莓派
日期:2014-09-19 15:22:08物流徽章
日期:2014-11-06 14:49:20数据陷阱解读徽章
日期:2015-08-13 15:21:45
发表于 2014-1-5 20:18 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

论坛徽章:
5
R研习者中级
日期:2014-09-19 14:20:23R研习者中级
日期:2014-09-23 14:46:37R研习者中级
日期:2014-09-23 14:47:09scala徽章
日期:2014-11-06 14:55:17高并发架构徽章
日期:2016-04-21 10:45:31
发表于 2014-8-3 14:15 | 显示全部楼层
感谢分享!!!
回复 支持 反对

使用道具 举报

论坛徽章:
8
R研习者初级
日期:2012-05-11 22:09:45Hadoop研习者中级
日期:2014-10-29 14:22:53统计徽章
日期:2014-11-06 14:50:39scala徽章
日期:2014-11-06 14:55:17神经网络徽章
日期:2017-01-06 10:49:08Hadoop研习者初级
日期:2017-04-20 17:15:22spark徽章
日期:2017-11-23 16:58:48spark徽章
日期:2017-12-28 17:06:55
发表于 2014-8-3 21:25 | 显示全部楼层
感谢中
回复 支持 反对

使用道具 举报

论坛徽章:
8
R研习者初级
日期:2012-05-11 22:09:45Hadoop研习者中级
日期:2014-10-29 14:22:53统计徽章
日期:2014-11-06 14:50:39scala徽章
日期:2014-11-06 14:55:17神经网络徽章
日期:2017-01-06 10:49:08Hadoop研习者初级
日期:2017-04-20 17:15:22spark徽章
日期:2017-11-23 16:58:48spark徽章
日期:2017-12-28 17:06:55
发表于 2014-8-3 21:26 | 显示全部楼层
好厉害啊
回复 支持 反对

使用道具 举报

论坛徽章:
12
R研习者中级
日期:2014-09-19 14:18:44HBase徽章
日期:2018-09-29 11:02:06Hive徽章
日期:2018-09-13 15:33:05大数据课程徽章
日期:2018-08-06 14:27:18Oracle研习者初级
日期:2018-05-17 15:55:11架构徽章
日期:2018-05-03 15:48:06架构徽章
日期:2018-01-11 17:24:29Java徽章
日期:2018-01-04 17:15:14linux徽章
日期:2017-11-23 17:01:23统计徽章
日期:2017-11-09 17:08:46Hadoop研习者中级
日期:2014-10-29 14:22:53知识图谱徽章
日期:2018-09-29 11:02:45
发表于 2014-8-3 23:35 | 显示全部楼层
谢谢分享,牛人
回复 支持 反对

使用道具 举报

论坛徽章:
3
R研习者中级
日期:2014-09-19 14:20:23电商分布式系统徽章
日期:2015-04-15 15:28:25算法导论徽章
日期:2016-03-16 10:46:20
发表于 2014-8-4 02:20 | 显示全部楼层
这是什么课程的
回复 支持 反对

使用道具 举报

论坛徽章:
11
Hadoop研习者中级
日期:2014-10-29 14:22:53比特币徽章
日期:2017-09-28 17:18:05架构徽章
日期:2017-09-19 10:59:00数据陷阱解读徽章
日期:2016-08-11 11:02:12spark徽章
日期:2016-07-14 11:05:11Java徽章
日期:2016-03-10 10:24:22大型分布式徽章
日期:2015-09-25 17:35:14架构徽章
日期:2015-05-07 11:16:05mahout徽章
日期:2014-11-06 14:57:10scala徽章
日期:2014-11-06 14:56:26金融徽章
日期:2017-12-08 10:41:29
发表于 2014-8-31 14:02 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

论坛徽章:
5
R研习者中级
日期:2014-09-23 14:46:37R研习者中级
日期:2014-09-23 14:47:09Hadoop研习者初级
日期:2014-10-08 17:37:55Hadoop研习者中级
日期:2014-10-29 14:22:53scala徽章
日期:2014-11-06 14:55:58
发表于 2014-8-31 22:22 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

论坛徽章:
10
R研习者中级
日期:2014-09-19 14:20:23spark徽章
日期:2015-03-19 10:35:27R研习者中级
日期:2014-12-18 15:08:55R研习者中级
日期:2014-12-18 15:03:30比特币徽章
日期:2014-12-18 15:02:11Oracle研习者初级
日期:2014-11-06 17:48:02scala徽章
日期:2014-11-06 14:55:16R研习者中级
日期:2014-09-23 14:47:09R研习者中级
日期:2014-09-23 14:46:37LATEX徽章
日期:2015-05-07 11:34:18
发表于 2014-9-11 21:23 | 显示全部楼层
:right:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2018-12-17 11:35 , Processed in 0.167225 second(s), 71 queries .