深圳地铁客流大数据 Spark 技术栈
写在前面
学以致用,本项目通过对深圳市开放数据之轨道交通客流情况进行分析,了解深漂的我们每天在上下班都经历了些什么…
本系列项目以Spark技术栈为主,
花絮
SHOW DATABASES;CREATE DATABASE IF NOT EXISTS szdw_ods;
CREATE DATABASE IF NOT EXISTS szdw_dwd;
CREATE DATABASE IF NOT EXISTS szdw_dws;
CREATE DATABASE IF NOT EXISTS szdw_ads;USE szdw_ods;SHOW TABLES;--1 ODS 原始表, 不做改动, 直接加载
//OGT-101 |FFHEDIBCC|2018-09-01 00:00:00|地铁五号线 |0 |2018-08-31 23:11:06|665 |地铁出站 |700 |263031101|长龙 |
DROP TABLE IF EXISTS szdw_ods.subway_swipe_record_20180901;
CREATE EXTERNAL TABLE szdw_ods.subway_swipe_record_20180901(
car_no String COMMENT '车',
card_no String COMMENT '卡号',
close_date String COMMENT '结算时间',
company_name String COMMENT '线名',
conn_mark String COMMENT '联程标记',
deal_date String COMMENT '进站时间',
deal_money String COMMENT '应该收入',
deal_type String COMMENT '出行类型',
deal_value String COMMENT '实际收入',
equ_no String COMMENT '闸机号',
station String COMMENT '站名'
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';LOAD DATA local INPATH '/Users/liuge36/IdeaProjects/liuge-flink/data/csv/part-00000-0116a51f-7a9c-4916-b2cd-546edce131f5-c000.csv'
OVERWRITE INTO TABLE szdw_ods.subway_swipe_record_20180901;SELECT * FROM szdw_ods.subway_swipe_record_20180901 LIMIT 10;SELECT collect_set(deal_type) FROM szdw_ods.subway_swipe_record_20180901;--["地铁入站","地铁出站","巴士"]第二层:DWD 清洗降维层
区分维表 dim_ 和事实表 fact_,为了使粒度更加细化,我们把进站和出站记录分开,巴士数据暂不考虑。--地铁进出站
DROP TABLE IF EXISTS szdw_dwd.fact_subway_in_out_detail;
CREATE EXTERNAL TABLE szdw_dwd.fact_subway_in_out_detail(
car_no String COMMENT '车',
card_no String COMMENT '卡号',
close_date String COMMENT '结算时间',
company_name String COMMENT '线名',
conn_mark String COMMENT '联程标记',
deal_date String COMMENT '进站时间',
deal_money String COMMENT '应该收入',
deal_type String COMMENT '出行类型',
deal_value String COMMENT '实际收入',
equ_no String COMMENT '闸机号',
station String COMMENT '站名'
)
PARTITIONED BY(dw_dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';INSERT OVERWRITE TABLE szdw_dwd.fact_subway_in_out_detail
partition(dw_dt = '2018-09-01')
SELECT
car_no,
card_no,
close_date,
company_name,
conn_mark,
deal_date,
deal_money,
deal_type,
deal_value,
equ_no ,
station
FROM szdw_ods.subway_swipe_record_20180901
WHERE deal_type != '巴士'AND unix_timestamp(deal_date, 'yyyy-MM-dd HH:mm:ss') > unix_timestamp('2018-09-01 06:14:00', 'yyyy-MM-dd HH:mm:ss')AND unix_timestamp(deal_date, 'yyyy-MM-dd HH:mm:ss') < unix_timestamp('2018-09-01 23:59:00', 'yyyy-MM-dd HH:mm:ss')
ORDER BY deal_date;SELECT count(1) FROM szdw_dwd.fact_subway_in_out_detail where dw_dt = '2018-09-01'; --780937--地铁进站
DROP TABLE IF EXISTS szdw_dwd.fact_subway_in_detail;
CREATE EXTERNAL TABLE szdw_dwd.fact_subway_in_detail(
car_no String COMMENT '车',
card_no String COMMENT '卡号',
close_date String COMMENT '结算时间',
company_name String COMMENT '线名',
conn_mark String COMMENT '联程标记',
deal_date String COMMENT '进站时间',
deal_money String COMMENT '应该收入',
deal_type String COMMENT '出行类型',
deal_value String COMMENT '实际收入',
equ_no String COMMENT '闸机号',
station String COMMENT '站名'
)
PARTITIONED BY(dw_dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';INSERT OVERWRITE TABLE szdw_dwd.fact_subway_in_detail
partition(dw_dt = '2018-09-01')
SELECT
car_no,
card_no,
close_date,
company_name,
conn_mark,
deal_date,
deal_money,
deal_type,
deal_value,
equ_no ,
station
FROM szdw_dwd.fact_subway_in_out_detail
WHERE deal_type = '地铁入站'AND dw_dt = '2018-09-01'
ORDER BY deal_date ;SELECT count(1) FROM szdw_dwd.fact_subway_in_detail where dw_dt = '2018-09-01'; --415386--地铁出站
DROP TABLE IF EXISTS szdw_dwd.fact_subway_out_detail;
CREATE EXTERNAL TABLE szdw_dwd.fact_subway_out_detail(
car_no String COMMENT '车',
card_no String COMMENT '卡号',
close_date String COMMENT '结算时间',
company_name String COMMENT '线名',
conn_mark String COMMENT '联程标记',
deal_date String COMMENT '进站时间',
deal_money String COMMENT '应该收入',
deal_type String COMMENT '出行类型',
deal_value String COMMENT '实际收入',
equ_no String COMMENT '闸机号',
station String COMMENT '站名'
)
PARTITIONED BY(dw_dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';INSERT OVERWRITE TABLE szdw_dwd.fact_subway_out_detail
partition(dw_dt = '2018-09-01')
SELECT
car_no,
card_no,
close_date,
company_name,
conn_mark,
deal_date,
deal_money,
deal_type,
deal_value,
equ_no ,
station
FROM szdw_dwd.fact_subway_in_out_detail
WHERE deal_type = '地铁出站'AND dw_dt = '2018-09-01'
ORDER BY deal_date ;SELECT count(1) FROM szdw_dwd.fact_subway_out_detail where dw_dt = '2018-09-01'; --365551-- --DWS 宽表
szdw_ods.subway_swipe_record_20180901
szdw_dwd.fact_subway_in_out_detail
szdw_dwd.fact_subway_in_detail
szdw_dwd.fact_subway_out_detailszdw_dws.subway_card_record_day_wideDROP TABLE IF EXISTS szdw_dws.subway_card_record_day_wide;
CREATE EXTERNAL TABLE szdw_dws.subway_card_record_day_wide(
card_no STRING,
deal_date_arr ARRAY < STRING > ,
deal_value_arr ARRAY < STRING > ,
deal_type_arr ARRAY < STRING > ,
company_name_arr ARRAY < STRING > ,
station_arr ARRAY < STRING > ,
conn_mark_arr ARRAY < STRING > ,
deal_money_arr ARRAY < STRING > ,
equ_no_arr ARRAY < STRING > ,
`count` int)
PARTITIONED BY(dw_dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';INSERT OVERWRITE TABLE szdw_dws.subway_card_record_day_wide PARTITION(dw_dt = '2018-09-01')
SELECT card_no,collect_list(deal_date),collect_list(deal_value),collect_list(deal_type),collect_list(company_name),collect_list(station),collect_list(conn_mark),collect_list(deal_money),collect_list(equ_no),count(1) c
FROM szdw_dwd.fact_subway_in_out_detail
WHERE dw_dt = '2018-09-01'
GROUP BY card_no
ORDER BY c DESC;SELECT count(1) FROM szdw_dws.subway_card_record_day_wide where dw_dt = '2018-09-01'; --412082select * from szdw_dws.subway_card_record_day_wide limit 10;--ADS 业务表, 当天的表现
深圳地铁客流大数据 Spark 技术栈相关推荐
- Python+大数据-Spark技术栈(二)SparkBaseCore
Python+大数据-Spark技术栈(二)SparkBase&Core 学习目标 掌握SparkOnYarn搭建 掌握RDD的基础创建及相关算子操作 了解PySpark的架构及角色 环境搭建 ...
- 大数据工程师技术栈探讨
1.前言 随着国务院印发十四五规划关于数字经济规划和数字信息化建设的推进(如下图1所示).大量的数字化的产品将产生海量的数据,因此近些年大数据技术越来越被大家重视起来. 图1 国务院十四五数字经济规 ...
- K8S 从懵圈到熟练--大数据平台技术栈18
回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的K8S! 来自:阿里技术公众号 阿里妹导读:排查完全陌生的问题.不熟悉的系统组件,对许多工程师来说是无与伦比的工作乐趣,当然也是一大挑战 ...
- TiDB 在大型互联网的深度实践及应用--大数据平台技术栈08
回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的TiDB! 作者介绍 吕磊,摩拜单车高级 DBA 一.业务场景 摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务 ...
- RocketMQ实战--大数据平台技术栈06
回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的RocketMQ! 作者丨张丰哲 www.jianshu.com/p/3afd610a8f7d 阿里巴巴有2大核心的分布式技术,一个是O ...
- 谈谈对 Canal( 增量数据订阅与消费 )的理解--大数据平台技术栈系列(3)
之前说了,大数据平台技术栈 (可点击查看),今天就来说说其中的Cannal 来源:朱小厮, blog.csdn.net/u013256816/article/details/52475190 概述 c ...
- 大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一)
大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一) 2017-03-27 11:58 浏览次数:148 1. 背景 前段时间京东公开了面向第二个十二年的战略规划,表示京东将全面走向技 ...
- 大数据常见技术栈简介
1.Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个 ...
- 图解YARN--大数据平台技术栈17
回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的YARN! 为什么会产生YRAN?这个与MapReduce1.x的架构有关,正是因为MapReduce1.x存在许多的问题,才会产生 Y ...
最新文章
- IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析
- C++ static静态成员变量详解
- C#中常用的几种读取XML文件的方法
- 专访Vue作者尤雨溪:Vue CLI 3.0重构的原因
- 证明创建runnable实例和普通类时间一样长
- mysql memcache redis_redis,mysql,memcache的區別與比較,redis兩種數據存儲持久化方式
- mac 二进制安装mysql_在mac下安装mysql二进制分发版的方法(不是dmg的)
- sun键盘没有stop键_【转帖】SUN基础知识
- 苏州真不能成为一线城市?
- Android 人脸识别 活体检测 人脸对比
- Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
- 干货!底层视觉研究,我们应该往哪里走?
- rsync和inotify远程同步
- DTOJ#5208. 蓝buff一吃就起飞
- 透彻理解神经网络剪枝算法
- PiFlow 朱小杰:科学家更爱开源 | Gitee 封面人物第 19 期
- 趣味计算机冷知识,那些不为人知的计算机冷知识,还不码起来!
- 新一届学生必备神器——讯飞腕式录音笔R1
- 【哈佛公开课】积极心理学笔记-06乐观主义(下)
- 群翔ShopNum1分销系统V8.1升级版,更优更全更盈利
热门文章
- 第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组 试题
- Android ShapeableImageView使用
- Ubuntu ssh 配置
- 解决exec: “stringer“: executable file not found in %PATH%
- 做一个战役地图动态展示的网站
- 2023.1.3日Java虚拟机(有部分整理借鉴了大佬们,以在下方打上链接)
- 硬盘驱动器vs.闪存
- LayUI——数据表格使用
- Windows系统下上传到Linux指定文件夹
- react高阶组件详解