Pig Latin语句进行简单的营销活动分析

踩了几个坑,电脑又中了毒,但是终于把程序调通了,Pig Latin游戏过了一个小关。

先来介绍下数据。营销活动是每个企业必须要进行的活动,但是影响营销活动的成功因素的是什么呢?虽然中小样本量容易建模,但是如果碰巧有几千个产品,每个产品每天都会进行很多营销活动,累计样本量上千万,如果使用集群进行分析呢?

这里举了个简单的例子:从星期、天气、广告方式、销量这几个简单的字段,对营销活动进行分析。这里举的例子是计算每种广告方式的平均销量,从而了解哪种广告方式更为有效。数据用逗号分割,广告方式有多种,用空格分割。

星期       天气         广告                   销量

Sunday,sunshine,newspaper weixin,300
Thursday,rainy,subtrain weixin newspaper,200
Monday,rainy,TV newspaper,200
Monday,sunshine,TV,200
Tuesday,sunshine,TV subtrain,100
Satuday,rainy,newspaper weixin,500
现在要做的是把各种广告方式的销量之和计算出来,然后求平均。这个小样本用python或者java都很容易做到,现在是放到集群上,用mapreduce或者pig Latin语句来做。

首先用了pig Latin的stream,写了python的代码,好了不说了,直接上代码:

#!/usr/bin/env python
import sys
for line in sys.stdin:
  date,weather,adv,sales=line.replace('\n','').split('\t')
  a=adv.split(' ')
  for item in a:
     print ("%s\t%s" % (item,sales))

这段python的意思是从输入流中读取每行记录,并且将数据形式变换成这种样子,然后从输出流中输出:

(newspaper,300)
(weixin,300)
(subtrain,200)
(weixin,200)
(newspaper,200)
(TV,200)
(newspaper,200)
(TV,200)
(TV,100)
(subtrain,100)
(newspaper,500)
(weixin,500)
然后用pig latin语句进行分组,不说了,直接上代码:

records = load '/home/user/data.txt' using PigStorage(',') as (date:chararray,weather:chararray,advertise:chararray,sales:int);
define ad `advertise.py` ship ('/home/lufang/advertise.py');
f_records = stream records through ad as (advertise:chararray,sales:int);
grouped_records = group f_records by advertise;
AVG_tem = foreach grouped_records generate group,AVG (f_records.sales);

最后的结果是介个样子的:

(TV,166.66666666666666)
(weixin,333.3333333333333)
(subtrain,150.0)
(newspaper,300.0)

看来微信的营销效果最好,是不是很神奇啦?

你可能感兴趣的:(hadoop,大数据,数据挖掘)