一、任务讲解

泰坦尼克号乘客信息存储与分析

hive创建语句format orc hive创建用户语句_数据


泰坦尼克号乘客信息存储与分析:

  • 创建乘客信息表
  • 导入数据到表中
  • 统计获救与死亡情况
  • 统计舱位分布情况
  • 统计港口登船人数分布情况
  • 统计性别与生存率的关系
  • 统计客舱等级与生存率的关系
  • 统计登船港口与生存率的关系

二、数据库定义

2.1、HQL语句简介

HiveQL是一种类SQL语言,用于分析存储在HDFS中的数据。

不支持事务及更新操作。

HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上, 延迟比较大。


2.2、数据类型

基础数据类型

hive创建语句format orc hive创建用户语句_hive创建语句format orc_02

复杂数据类型

hive创建语句format orc hive创建用户语句_hive_03

2.3、Hive CLI

1、执行shell命令
用户不需要退出hive CLI就可以执行简单的bash shell命令。只要在命令前加上!并且以分号(;)结尾就可以

hive创建语句format orc hive创建用户语句_big data_04

2、在Hive中使用Hadoop的dfs命令

hive创建语句format orc hive创建用户语句_big data_05


2.4、创建与查看数据库

hive创建语句format orc hive创建用户语句_hadoop_06


hive创建语句format orc hive创建用户语句_hadoop_07

2.5、创建数据表

(中括号表示可选)

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name   #[EXTERNAL]:外表/内表     
  (col_name data_type [COMMENT col_comment], ...)
  [PARTITIONED BY (col_name data_type, ...)] #分区表 指定字段
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)]      INTO num_buckets BUCKETS] 
  [ROW FORMAT row_format]   #字段将分隔符或行间分隔符
  [STORED AS file_format]   #定义存储格式
  [LOCATION hdfs_path]    #指定表数据存放的路径

三、创建表

hive创建语句format orc hive创建用户语句_hive_08


3.1、创建内表

在train数据库下创建表person

hive创建语句format orc hive创建用户语句_hive创建语句format orc_09


(在浏览器输入:master:50070可以看到)

hive创建语句format orc hive创建用户语句_big data_10

数据内容
person.txt(我放在/opt目录下)

1,Tom,23
2,Kate,24
3,Betty,22
4,Ketty,23
5,Jhon,21

这里有种简易的方式导入到hive中就是:先上传到HDFS

hive创建语句format orc hive创建用户语句_hadoop_11


hive创建语句format orc hive创建用户语句_big data_12


3.2、创建外表

创建Hive外部表external_person,指定HDFS的路径为/user/root/external/person

hive创建语句format orc hive创建用户语句_hive创建语句format orc_13


hive创建语句format orc hive创建用户语句_hive创建语句format orc_14


数据内容

person.txt(我放在/opt目录下)

1,Tom,23
2,Kate,24
3,Betty,22
4,Ketty,23
5,Jhon,21

上传到hdfs:

hive创建语句format orc hive创建用户语句_hive创建语句format orc_15

*补充:内外部差别

学习了内表和外表,那么疑问来了,它们是不是就差别在能否自定义目录?其实它们的差别主要体现在删除,别急!看完下面例子你就明白了!

① 先删除内表和外表

hive创建语句format orc hive创建用户语句_hive_16


② 查看它们在hdfs的数据文件是否被删除

内表被删除了:

hive创建语句format orc hive创建用户语句_hadoop_17


外表没被删除:

hive创建语句format orc hive创建用户语句_big data_18


总结内表删除时会把原数据及hdfs上的数据都删掉,而外表删除时只会删掉原数据不会删掉hdfs上的数据


3.3、创建泰坦尼克乘客信息表

任务实现:创建泰坦尼克乘客信息表

  • 创建一个内/外部表,指定数据的存放路径。
  • 通过HDFS命令导入数据到指定路径。

创建(内)表

hive创建语句format orc hive创建用户语句_hadoop_19

数据文件

train.csv

(导入时删掉头一行)

hive创建语句format orc hive创建用户语句_hadoop_20


上传到hdfs

hive创建语句format orc hive创建用户语句_hive创建语句format orc_21

查看:

hive创建语句format orc hive创建用户语句_数据_22


3.4、静态分区表

  • 创建静态分区表tidanic_part,字段为:passengerid、survived、 pclass、 name
  • 分区字段为gender,按照性别字段sex分区

hive创建语句format orc hive创建用户语句_big data_23

hive创建语句format orc hive创建用户语句_hadoop_24

hive创建语句format orc hive创建用户语句_数据_25

OK

hive创建语句format orc hive创建用户语句_big data_26

3.5、动态分区表

  • 创建动态分区表tidanic_dynamic_part,字段为:passengerid、survived、 name
  • 分区字段为passenderclass,按照pclass值进行分区

hive创建语句format orc hive创建用户语句_hive创建语句format orc_27


(我们可以看出动态分区建表其实和静态分区的建表是一样的,他们不同在动态分区进行插入时要初始化)

hive创建语句format orc hive创建用户语句_hive_28


OK

hive创建语句format orc hive创建用户语句_数据_29

3.7、创建带数据的表

  • 创建一个tidanic的子集

hive创建语句format orc hive创建用户语句_hive_30


hive创建语句format orc hive创建用户语句_hive_31

3.8、创建桶表

  • 桶是比表或分区更为细粒度的数据范围划分。针对某一列进行桶的组织,对列值哈希,然后除以桶的个数求余,决定将该条记录存放到哪个桶中。

获得更高的查询处理效果
抽样调查

  • 创建桶表,按年龄将数据分到4个桶,抽取两个桶的数据创建一个新表tidannic_sample

hive创建语句format orc hive创建用户语句_big data_32


hive创建语句format orc hive创建用户语句_hadoop_33


hive创建语句format orc hive创建用户语句_hive_34

语法TABLESAMPLE(BUCKET x OUT OF y)

X代表从哪个桶开始抽, y代表抽取桶个数为(桶数/y)个,y必须是桶数的倍数或者因子