「基础」SQL-Hive简介及常用数据类型

2021-05-18 09:58:18 浏览数 (1)

「基础」这个专题,主要介绍数据分析师的基础技能,我们先从最基础的提数讲起。

前言-Hive简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。

Hive的最佳使用场合是大数据集的批处理作业。在互联网公司,每个用户在其app、web网页上的所有行为都会上报到日志中,即便是一个日活跃用户数只有10万的APP,每日产生的日志行数也是千万级的,而类似微信这种日活就有10亿用户的APP,其每日产生的数据量更是天文数字。如果想要对这些数据进行分析、挖掘,现阶段互联网行业内使用最广泛的就是Hive。

作为一个数据分析师,操作Hive提取数据已经成为了一个必备技能,但对数据分析师来说,查询才是做的最多的操作,毕竟使用工具是为了完成分析。所以我们总结的知识点主要以数据分析从零基础入门操作到实战为主。

Hive-常用数据类型

在了解Hive如何查询数据之前,我们需要了解下Hive的常用数据类型,这个是基础中的基础。建表,函数操作,UDF函数,都要考虑到Hive的数据类型。

1、常用的数据格式

另Hive的基本数据类型还包括一个BINARY,但工作中基本接触不到,故不在此介绍,感兴趣的同学可自行百度。

2、常用的集合数据类型

另Hive有集合数据类型还包括STRUCT,MAP,但工作中基本接触不到,故不在此介绍,感兴趣的同学可自行百度。

3、Hive与其他SQL数据格式的区别

在其他SQL方言中,通常会提供限制最大长度的“字符数组”(也就是很多字符串)类型,但Hive中不支持这种数据类型。

关系型数据库提供这个功能是出于性能优化的考虑。因为定长的记录更容易进行建立索引,数据扫描,等等。

在Hive所处的“宽松”的世界里,不一定拥有数据文件但必须能够支持使用不同的文件格式,Hive根据不同字段间的分隔符来对其进行判断。

4、TIMESTAMP

新增数据类型 TIMESTAMP的值可以是整数,也就是距离Unix新纪元时间(1970年1月1日,午夜12点)的秒数;也可以是浮点数,即距离Unix新纪元时间的秒数,精确到纳秒(小数点后保留9位数);还可以是字符串,即JDBC所约定的时间字符串格式,格式为YYYY-MM-DD hh:mm:ss.fffff。

Hive-数据类型转换

1、显示转换

使用cast函数可以对指定的值进行数据类型转换。

代码语言:javascript复制
cast(value AS TYPE)

value是需要被转换的数据, AS是固定关键字,type是需要转换的类型。

常用转换一般是数字类型和字符串之间进行互转,如:

代码语言:javascript复制
cast(2019 AS STRING)

cast('2019' AS INT)

当然cast的转换功能也不是万能的,必须是“存储的类型值”符合转换条件才能进行转换,否则会返回NULL,比如“XYZ”转换成FLOAT,很明显XYZ不是数值,所以转换失败,结果返回NULL值。

此外,如果使用cast将值范围较大的数据类型转换成值范围较小的数据类型,cast函数会直接截取,损失数据精度甚至得到错误结果,需要慎用。

2、隐式转换

当有以下不同数据类型的列互相运算时,Hive会自动把值范围较小的数据类型转为值范围较大的数据类型,以保证两列数据格式相同从而可以运算。

大小顺序如下:

TINYINT < SMALINT < INT < BIGINT< FLOAT < DOUBLE

以上,就是本期内容,希望对你有帮助~

0 人点赞