学习笔记Hive(三) —— Hive应用(1)—— 数据库定义、创建表

一、任务讲解

泰坦尼克号乘客信息存储与分析
在这里插入图片描述
泰坦尼克号乘客信息存储与分析:

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

二、数据库定义

2.1、HQL语句简介

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

不支持事务及更新操作。

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


2.2、数据类型

基础数据类型
在这里插入图片描述

复杂数据类型
在这里插入图片描述

2.3、Hive CLI

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

在这里插入图片描述

2、在Hive中使用Hadoop的dfs命令
在这里插入图片描述


2.4、创建与查看数据库

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

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]    #指定表数据存放的路径


三、创建表

在这里插入图片描述


3.1、创建内表

在train数据库下创建表person
在这里插入图片描述
(在浏览器输入:master:50070可以看到)
在这里插入图片描述

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

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

这里有种简易的方式导入到hive中就是:先上传到HDFS
在这里插入图片描述
OK


3.2、创建外表

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

在这里插入图片描述
在这里插入图片描述
数据内容
person.txt(我放在/opt目录下)

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

上传到hdfs:
在这里插入图片描述

*补充:内外部差别

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

① 先删除内表和外表
在这里插入图片描述
② 查看它们在hdfs的数据文件是否被删除
内表被删除了:
在这里插入图片描述
外表没被删除:
在这里插入图片描述
总结内表删除时会把原数据及hdfs上的数据都删掉,而外表删除时只会删掉原数据不会删掉hdfs上的数据


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

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

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

创建(内)表
在这里插入图片描述

数据文件
train.csv
(导入时删掉头一行)
在这里插入图片描述
上传到hdfs
在这里插入图片描述

查看:
在这里插入图片描述


3.4、静态分区表

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

OK
在这里插入图片描述

3.5、动态分区表

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

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

3.7、创建带数据的表

  • 创建一个tidanic的子集

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

3.8、创建桶表

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

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

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

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

语法TABLESAMPLE(BUCKET x OUT OF y)

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


版权声明:本文为qq_46485161原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。