HDFS与Hive实战 + 滴滴出行数据分析

环境配置:链接:https://pan.baidu.com/s/1z8ALyBJ6aWuHE4bR2mvvoA 密码:zylc

1.HDFS

1.1 分布式文件系统

HDFS(Hadoop Distributed File System)是 Apache Hadoop 项目的一个子项目. Hadoop 非常适于存储大型数据 (比如 TB 和 PB), 其就是使用 HDFS 作为存储系统. HDFS 使用多台计算机 存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统.

1.2 HDFS的Shell命令行

  • 查看文件链表 hadoop fs -ls URL
  • 创建文件夹 hadoop fs -p -mkdir /aa/bb
  • 上传文件 hadoop fs -put 本地文件 hdfs目的地
  • 下载文件 hadoop fs -get 文件 hdfs来源地
  • 删除文件 hadoop fs -rm 文件

1.3 启动Hadoop集群

  • cd /export/onekey
  • ./start-all.sh

1.4 大数据环境清单

组件 说明
Apache Hadoop 三大组件:
HDFS:分布式文件系统
MapReduce:分布式计算引擎
YARN:资源管理系统
Apache Hive 数据仓库平台
Apache Spark 主流的第三代计算引擎
Apache Zeppelin 大数据可视化操作平台

2.数据仓库

是一个很大的数据存储集合,出于企业的分析性报告决策支持目的而创建,对多样的业务数据进行筛选与整 合。它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。有很多版本的迭代主要用用来查找

2.1 数据仓库与数据库区别

数据库:面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行 查询、修改。用户较为关心操作的响应时间、数据的安全性完整性并发支持的用户数等问题,也被称为联机事务处理 OLTP (On-Line Transaction Processing)。

数据仓库:一般针对某些主题的历史数据进行分析,支持管理决策,又被称为联机分析处理 OLAP (On-Line Analytical Processing)

两者区别

  • 数据库是面向事务的设计,数据仓库是面向主题设计的。
  • 数据库一般存储业务数据,数据仓库存储的一般是历史数据
  • 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录 用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入 冗余,依照分析需求,分析维度、分析指标进行设计。
  • 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。

3.Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供 类SQL查询功能。

3.1 终端连接Hive

  1. 进入到/export/server/spark-2.3.0-bin-hadoop2.7/bin目录中
  2. 执行以下命令:./beeline
  3. 输入:!connect jdbc:hive2://node1.itcast.cn:10000,回车
  4. 输入用户名:root
  5. 直接回车,即可使用命令行连接到Hive,然后就可以执行HQL了

3.2 Hive操作命令

  • 创建数据库

    • create database if not exists myhive;
  • 查看数据库

    • show databases;
  • 删除数据库包含数据库下的表一起删除

    • drop database myhive cascade;
  • 创建表并指定字段之间的分隔符

    • create table if not exists myhive.stu2**(id integer ,name string) row format delimited fields terminated by ‘,’ stored as textfile location ‘/user/stu2’;**
  • 创建分区表

    • create table myhive.score(s_id string, c_id string , s_score int) partitioned by (month string) row format delimited fields terminated by ‘,’
  • 加载数据到分区表中

    • load data local inpath ‘/root/data/hive-test/score.csv’ into table myhive.score partition (month=‘202006’);
  • 添加分区

    • alter table myhive.score add partition(month = ‘202007’)
  • 创建内部表 默认在hfds的路径

    • /user/ hive/warehouse/数据库名/分区名/表名
  • 上传的方式向分区中插入数据

    • hadoop fs -put 文件.txt /user/ hive/warehouse/数据库名/分区名/表名

3.3 Hive函数

  • length() 长度
  • data_format() 日期处理 data_format(‘2012-02-12 12:00:01’,‘yyyy-MM-dd HH:mm’)
  • 条件函数
    • CASE WHEN a THEN b [WHEN c THEN d] * [ELSE e] END
    • case when s_id = 1 then ‘张三’ else s_id end

4. Zeppelin

使用Zeppelin来连接到Spark SQL的Thrift Server,这样我们可以以更直观的方式来查看 Hive中的数据。而且Zeppelin也可以以图表的方式展示数据,端口8090

在这里插入图片描述
在这里插入图片描述

default.driver org.apache.hive.jdbc.HiveDriver
default.url jdbc:hive2://node1.itcast.cn:10000
Dependencies artifact /export/server/hadoop-2.7.5/share/hadoop/common/hadoop-common-2. 7.5.jar
/export/server/hive-2.1.0/lib/hive-common-2.1.0.jar
/export/server/hive-2.1.0/jdbc/hive-jdbc-2.1.0-standalone.jar
/export/server/hive-2.1.0/lib/hive-serde-2.1.0.jar
/export/server/hive-2.1.0/lib/hive-service-2.1.0.jar
/export/server/hive-2.1.0/lib/curator-client-2.6.0.jar

5.滴滴出行数据分析

5.1 架构图

  1. 用户打车的订单数据非常庞大。所以我们需要选择一个大规模数据的分布式文件系统来存储这些 日志文件,此处,我们基于Hadoop的HDFS文件系统来存储数据。

  2. 为了方便进行数据分析,我们要将这些日志文件的数据映射为一张一张的表,所以,我们基于 Hive来构建数据仓库。所有的数据,都会在Hive下来几种进行管理。为了提高数据处理的性能。

  3. 我们将基于Spark引擎来进行数据开发,所有的应用程序都将运行在Spark集群上,这样可以保 证数据被高性能地处理。

5.2 日志数据集介绍

以下就是一部门用户打车的日志文件。

b05b0034cba34ad4a707b4e67f681c71,15152042581,109.348825,36.068516, 陕 西 省 , 延 安 市,78.2,男,软件工程,70后,4,1,2020-4-12 20:54,0,2020-4-12 20:06

23b60a8ff11342fcadab3a397356ba33,15152049352,110.231895,36.426178, 陕 西 省 , 延 安 市,19.5,女,金融,80后,3,0,0,2020-4-12 4:04

1db33366c0e84f248ade1efba0bb9227,13905224124,115.23596,38.652724, 河 北 省 , 保 定 市,13.7,男,金融,90后,7,1,2020-4-12 10:10,0,2020-4-12 0:29

日志包含了以下字段:

字段名 解释
orderld 订单id
telephone 打车用户手机
long 用户发起打车的经度
lat 用户发起打车的纬度
province 所在省份
city 所在城市
es_money 预估打车费用
gender 用户信息 - 性别
profession 用户信息 - 行业
age_range 年龄段(70后、80后、…)
tip 小费
subscribe 是否预约(0 - 非预约、1 - 预约)
sub_time 预约时间
is_agent 是否代叫(0 - 本人、1 - 代叫)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值