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)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值