SparkSQL实践
SparkSQL实战:统计用户及商品数据指标,包含以下三张表
orders表:
product表:
prior表:
实现以下业务需求:
1.统计product被购买的数量:
val productCnt = priors.groupBy("product_id").count()
2..统计product 被reordered的数量(再次购买)
product_id做group by(聚合),统计一下sum(reorder)的值
2)priors.selectExpr("product_id","cast(reordered as int)")
.groupBy("product_id").sum("reordered")
(agg一般是搭配groupby这种聚合函数使用和单独使用sum的差别,是在一次聚合中可以统计出来多个值)
3.结合上面数量统计product购买的reordered 的比率avg("reordered")
sql解决:jproduct.selectExpr("*","sum_re/count as mean_re")
val jproduct = productCnt.join(prodcutSumReorder,"product_id")
2定义udf:.val avg_udf = udf((sm:Long,cnt:Long)=>sm.toDouble/cnt.toDouble)
user 统计/特征
1.每个用户平均购买订单的间隔周期
1)解决用户的第一个订单没有间隔天数的,需要赋值为0
val ordersNew =orders.selectExpr("*","if(days_since_prior_order='',0,days_since_prior_order) as dspo")
.drop("days_since_prior_order").show()
(drop:丢掉其中的一列)
2)最终代码:
ordersNew.selectExpr("user_id","cast(dspo as int)")
.groupBy("user_id").avg("dspo").show()
2.每个用户的总订单数量
orders.groupBy("user_id").count().show()
3.每个用户购买的product商品去重后的集合数据
val po = orders.join(priors,"order_id").select("user_id","product_id").show(5)
3.1导包:import spark.implicits._
3.2代码:rddRecords.toDF("user_id","product_records")
4.每个用户总商品数量以及去重后的商品数量
总商品数量:
orders.join(priors,"order_id").groupBy("user_id").count().show(5)
5.每个用户购买的平均每个订单的商品数量
1)先求每个订单的商品数量【对订单做聚合count()】
val ordProCnt = priors.groupBy("order_id").count()
SparkSQL实践相关推荐
- Spark 1.6 SparkSQL实践
为什么80%的码农都做不了架构师?>>> 数据源CDN日志. 每行日志数据格式: 序号 名称 说明 1 客户端IP 2 预留字段 3 预留字段 4 请求时间 格式为:[dd/M ...
- 大数据工程师技能要求的学习路线图
一.大数据相关工作介绍 大数据方向的工作目前主要分为三个主要方向: 1. 大数据工程师 2. 数据分析师 3. 大数据科学家 4. 其他(数据挖掘等) 二.大数据工程师的技能要求 附上大数据工程师技能 ...
- 2018年12月云栖技术活动最全资料汇总:50+直播与Meetup分享...
云栖社区12月份技术活动资料下载大全:技术直播.系列公开课.Meetup.峰会.钉群分享等.欢迎分享给更多开发者. 2019年1月活动预告即将推出.欢迎加入社区钉群,将你所感兴趣的知识与话题共享给我们 ...
- 2018年12月云栖技术活动最全资料汇总:50+直播与Meetup分享
云栖君导读:应开发者建议,云栖社区特别将线下沙龙和直播活动进行汇总,一键分享给大家.当然,从2019年1月起,我们还有预告版. 云栖社区12月份技术活动资料下载大全:技术直播.系列公开课.Meetup ...
- sparksql 操作hive_Spark SQL 物化视图原理与实践
导言 物化视图作为一种预计算的优化方式,广泛应用于传统数据库中,如Oracle,MSSQL Server等.随着大数据技术的普及,各类数仓及查询引擎在业务中扮演着越来越重要的数据分析角色,而物化视图作 ...
- 史上最简单的spark教程第十三章-SparkSQL编程Java案例实践(终章)
Spark-SQL的Java实践案例(五) 本章核心:JDBC 连接外部数据库,sparkSQL优化,故障监测 史上最简单的spark教程 所有代码示例地址:https://github.com/My ...
- binlog流程 mysql_小米 MySQL 数据实时同步到大数据数仓的架构与实践
背景MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来说 ...
- SparkSQL和Hadoop(面向数据科学家和大数据分析师)
了解HDFS命令.Hadoop.Spark SQL.SQL查询.ETL和数据分析| Spark Hadoop集群虚拟机|完全解决的问题 你会学到什么 作为本课程的一部分,学生将获得在Spark Had ...
- 基于Hadoop的58同城离线计算平台设计与实践
作者:余意,来自:DataFun 导读:58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 PB 存储,日40万计算任务,面临挑战极大.58大数据平台的定位主要是服务数据 ...
最新文章
- 干货|卷积有多少种?一文读懂深度学习中的各种卷积
- mysql自然连接和等值连接_mysql sql99语法 内连接等值连接
- Heartbeat+DRBD+NFS案例详解
- 【安全漏洞】一次前台任意文件下载漏洞挖掘
- python编程关键字_python编程关键字
- Vue mixins学习
- Mujoco 基本教程
- mac配置adb环境变量
- [EdgeAI] NXP eIQ 机器学习Toolkit (二):模型篇
- 入行数据分析要知道什么是概括性度量
- php model module,Yii2用Gii自动生成Module+Model+CRUD
- 中兴程序员跳楼事件始末解读
- 百度seo算法_SEO秘诀:Google的逆向工程算法
- 不可不知!4种常见的黑客攻击手段
- 使用NanoHTTPD在Android上建立本地服务器
- 计算机网络基础选择题
- USACO健康的荷斯坦奶牛(DFS,二进制暴力枚举)
- java httpget 传参数_Java 发送http请求(get、post)
- 计算机专业英语课外笔记,手帐 | 有了这份笔记后 我终于爱上了英语
- 通信网络安全与保密综述报告——无线通信系统网络安全发展的现状、趋势及新技术