学习笔记Hive —— Hive应用—— 数据库定义创建表

Posted 别呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记Hive —— Hive应用—— 数据库定义创建表相关的知识,希望对你有一定的参考价值。

一、任务讲解

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

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

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

二、数据库定义

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


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必须是桶数的倍数或者因子

以上是关于学习笔记Hive —— Hive应用—— 数据库定义创建表的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记Hive —— Hive应用—— 数据库定义创建表

学习笔记Hive —— Hive开发应用

hive学习笔记_hive的介绍与安装

hive学习笔记_hive的表创建

hive学习笔记之二:复杂数据类型

Hive 学习笔记(启动方式,内置服务)