大数据统计脚本, 分城市订单统计

date_parameter <- "2016-08-01"
start_date<-as.Date(date_parameter)
dayCount_parameter = 1
array = strsplit(as.character(start_date),"-")
year = as.character(array[1])
month=as.character(array[2])

hiveContext <- sparkRHive.init(sc)
sql(hiveContext, "use honeycomb_bh_db")

if(dayCount_parameter>0){
date_parameter <-as.character(start_date)
#通过hiveSql 获得想要的并集集合并且缓存下来 sql date_add
##程序执行阶段1: 数据准备。。。。。
acquired_users_sql <-"select presentee_mobile,recommend_mobile, shareid from sc_t_acquire_record where sc_t_acquire_record.year=2016 and sc_t_acquire_record.month=08 and to_date(ct_time)=‘STARTDATE‘ and shareid is not null"
all_order_sql <- "select distinct passenger_phone, (create_time) order_time,city_id from sc_t_order_all_info As a where a.year=2016 and a.month=08 and to_date(a.create_time)>=‘STARTDATE‘ and to_date(a.create_time)<=date_add(date(‘STARTDATE‘),7) and product_id=210"

# user_agent, app
share_id_city_id_sql <-"select b.* from (select distinct(receivePhone), min(substr(share_id, 11)) time from sc_analyze_acquire_event As a where a.year=2016 and a.month=08 and to_date(create_time)=‘STARTDATE‘ and (event_name like ‘%2103%‘ or event_name like ‘%2102%‘) group by receivePhone) As a inner join (select *, substr(share_id, 11) time2 from sc_analyze_acquire_event) as b on a.receivePhone=b.receivePhone and a.time=b.time2"
share_id_city_id_sql <- gsub(pattern=‘STARTDATE‘, replacement=date_parameter, share_id_city_id_sql)

acquired_users_sql<-gsub(pattern=‘STARTDATE‘, replacement=date_parameter, acquired_users_sql)
all_order_sql<-gsub(pattern=‘STARTDATE‘, replacement=date_parameter, all_order_sql)

share_id_city_id <-sql(hiveContext,share_id_city_id_sql);

#当天领券绑定的用户集合
acquired_users <-sql(hiveContext,acquired_users_sql)
acquired_users<-distinct(acquired_users)
cache(acquired_users)

#7日内的全订单集合
all_orders <-sql(hiveContext,all_order_sql)

acquired_users_with_orders_sql = paste("select * from (", acquired_users_sql,") As acquire inner join (",all_order_sql, ") As orders on acquire.presentee_mobile = orders.passenger_phone where orders.passenger_phone is not null and acquire.presentee_mobile is not null",sep="")
acquired_users_with_orders <-sql(hiveContext,acquired_users_with_orders_sql)
cache(acquired_users_with_orders)

cache(share_id_city_id)
acquired_users <- join(acquired_users,share_id_city_id, share_id_city_id$receivePhone==acquired_users$presentee_mobile, "inner")
acquired_users$receivePhone=NULL
#acquired_users<-filter(acquired_users, "shareid is not null")
acquired_users$acquire_city_id = acquired_users$city_id
acquired_users$city_id =NULL
acquired_users$recommendPhone=NULL
acquired_users$receivePhone=NULL

group1 <- count(group_by(acquired_users, "acquire_city_id"))
acquired_users_with_orders = distinct(acquired_users_with_orders)
#######去掉, 不在一个同一个城市领券打车的人数。 。。。对异地领券,异地打车, 在分城市统计的时候忽略不计。
acquired_users_with_orders$passenger_phone=NULL
acquired_users_with_orders$forJoin = acquired_users_with_orders$city_id
acquired_users_with_orders$city_id = NULL
acquired_users_with_orders<-join(acquired_users_with_orders,share_id_city_id, acquired_users_with_orders$shareid==share_id_city_id$share_id & acquired_users_with_orders$presentee_mobile == share_id_city_id$receivePhone & share_id_city_id$city_id==acquired_users_with_orders$forJoin & share_id_city_id$recommendPhone==acquired_users_with_orders$recommend_mobile, "inner")
acquired_users_with_orders$forJoin=NULL

group2 <-count(group_by(acquired_users_with_orders, "city_id"))
group2$order_count= group2$count
group2$count=NULL
group2$order_city_id = group2$city_id
group2$city_id=NULL
group3 <- join(group1,group2, group1$acquire_city_id==group2$order_city_id, "inner")
group3$ratio <- group3$order_count/group3$count
cache(group3)
cityName <- sql(hiveContext, "select * from sc_mis_city")
city_conv_rank = join(group3, cityName, group3$order_city_id==cityName$id, "inner")
city_conv_rank$id=NULL
city_conv_rank<-orderBy(city_conv_rank, -city_conv_rank$ratio)
city_conv_rank$pid=NULL
city_conv_rank$coupon_count=city_conv_rank$count
city_conv_rank$count=NULL
city_conv_rank$first_order_count=city_conv_rank$order_count
city_conv_rank$order_count=NULL
city_conv_rank$convert_ratio = city_conv_rank$ratio
city_conv_rank$ratio = NULL
}
showDF(city_conv_rank, 1500)

时间: 2024-11-03 20:53:58

大数据统计脚本, 分城市订单统计的相关文章

大数据学习笔记7&#183;城市计算(1)

前言 众所周知,快速的城市化使得很多人的生活变得现代化,同时也产生了很多挑战,如交通拥挤.能源消耗和空气污染. 城市的复杂性使得应对这些挑战看起来几乎是不可能的.近来,传感技术和大规模计算基础设施的进步产生了各种各样的大数据,从社会化媒体数据到交通数据,从地理数据到气象数据.如果使用得当,我们可以使用这些数据去应对城市中面临的各种挑战. 受到这个机会的激励,我们提出了城市计算的解决方案.它把城市传感.城市数据管理.城市数据分析和服务提供变成一个对人的生活.城市运行系统和环境进行不断重复但不显眼的

大数据将成为智慧城市加快发展的引擎

智慧城市是新一代信息技术支撑.知识社会下一代创新环境下的城市形态.从智慧城市概念来讲,最大限度的开发整合.融合和利用各类城市资源,是整个智慧城市建设非常重要的核心.智慧城市的根本任务是实现城市范围内.不同部门.不同行业.不同群体,不同系统之间的数据融合.业务协同.因此智慧城市是以数据为王的游戏,数据是生成智慧的基础.数据也将推动智慧城市的发展,成为智慧城市发展的新引擎. 大数据对智慧城市的四大作用 城市发展应该有三大功能即承载功能.经济功能和社会功能,而任何功能的实现都需要掌握最准确和最完整的的

大数据阶段划分及案例单词统计

大数据阶段的重要课程划分 离线分析 : hadoop生态圈 HDFS, MapReduce(概念偏多), hive(底层是MapReduce), 离线业务分析80%都是使用hive 实时分析 : spark 数据结构 : 二叉树(面试) 动态规划, redis数据库, SSM三大框架 1. spring 2. springMVC 3. mybatis HDFSAPI HDFS创建目录 @Test public void mkdirTest() throws IOException { //1 获

视频大数据技术在智慧城市中的应用

现代社会的信息量正以飞快的速度增长,这些信息里又积累着大量的数据.预计到2025年,每年产生的数据信息将会有超过1/3的内容驻留在云平台中或借助云平台处理.我们需要对这些数据进行分析和处理,以获取更多有价值的信息.在未来的"智慧城市"中,会有越来越大的结构化以及非结构化的数据.那么我们如何高效地存储和管理这些数据,如何分析这些数据呢?答案是,我们需要强有力的大数据处理系统进行支撑. 作为目前最火热的词汇之一,大数据在各个领域都已有了较为成熟的应用.在视频监控领域,大数据时代正悄悄来临.

Oracle大数据表的分表处理

1.首先给大数据表创建rownum序列号 --增加序列号字段 alter table TEST add xlh number; --填充序列号 update TEST set xlh = rownum; 2.通过xlh字段进行分数据到不同的表中(以建表的方式进行处理) create table hik_1001 as select clm1 as hik_clm1,clm2 as hik_clm2,clm3 as hik_clm3 from TEST where xlh>=1 and xlh <

mysql大数据分库和分表 php解决方案!

当Mysql数据量过大时,就会面临压力分解,这时分库分表是一个不错的解决方案,现在我们就来谈谈Mysql如何分库分表比较理想,然后再用php如何调用. 1,主从复制,读写分离 对主库修改数据,查询使用从库.一主多从,来降低数据库读取压力. 2,分库分表 根据实体业务来分库,分表.如,根据数据的活跃性,根据用户uid等. 3,MySQL 不同存储引擎区别 InnoDB 用于数据完整性/写性能要求比较高的应用. MyISAM 适合查询应用. 分表是分散数据库压力的好方法. 分表,最直白的意思,就是将

华为内部关于大数据的一篇好文

科技的进步在很多的时候总会超出我们的想象,如果未来我们一个人拥有的电脑设备超过现在全球现在计算能力的总和,一个人产生的数据量超过现在全球数据 量的总和,甚至你的宠物小狗产生的信息量都超过现在全球数据量的总和,世界会发生什么呢?阅读本文,大数据(Big Data)会告诉你一个充满奇幻色彩的世界. 一.详解时髦词汇:大数据 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据客户的需求,

挨踢部落直播课堂第一期:起航2017——拥抱大数据

1.大数据框架结构和全景概览: 2.企业大数据场景和不同数据源整合利用: 3.大数据学习与高薪求职: 一.大数据框架结构和全景概览 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 大数据 首先,大数据并不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据每个用户的需求,Google实时从全球海量的数字资产(或数字垃圾)中快速找出最可能的答案,呈现给你,就是一个最典型的大数据服务.只不过过去这样规模的数据量处理和有商业价值的应用太少,在IT行业

华为内部狂转好文:有关大数据,看这一篇就够了

一.详解时髦词汇:大数据 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据客户的需求,Google实时从全球海量的数字资产 (或数字垃圾)中快速找出最可能的答案,呈现给你,就是一个最典型的大数据服务.只不过过去这样规模的数据量处理和有商业价值的应用太少,在IT行业没有 形成成型的概念.现在随着全球数字化.网络宽带化.互联网应用于各行各业,累积的数据量越来越大,越来越多企业.行业和