关于云计算:hive学习笔记之一基本数据类型

8次阅读

共计 2665 个字符,预计需要花费 7 分钟才能阅读完成。

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

《hive 学习笔记》系列导航

  1. 根本数据类型
  2. 简单数据类型
  3. 外部表和内部表
  4. 分区表
  5. 分桶
  6. HiveQL 根底
  7. 内置函数
  8. Sqoop
  9. 根底 UDF
  10. 用户自定义聚合函数(UDAF)
  11. UDTF

对于 hive 学习笔记系列

  • 《hive 学习笔记》系列放弃了作者一贯的格调,即通过实战学习和理解;
  • 作为一个构建在 Hadoop 上的数据仓库框架,hive 被用来进行数据提取、转化、加载,这是一种能够存储、查问和剖析存储在 Hadoop 中的大规模数据的机制,hive 数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查问性能,能将 SQL 语句转变成 MapReduce 工作来执行。(来自:《Hadoop 利用开发实战详解(修订版)》)
  • 架构如下,可见最终还是在执行 MapReduce:

环境信息

本文对应的环境信息如下:

  1. CentOS Linux release 7.5.1804
  2. JDK:1.8.0_191
  3. hadoop:2.7.7
  4. hive:1.2.2

对于 hive 的部署

  1. 须要先部署 hadoop 环境,请参考《Linux 部署 hadoop2.7.7 集群》
  2. hadoop 部署胜利后,装置和体验 hive 其参考《装置和体验 hive》

数据类型简介

Hive 反对根本和简单数据类型:

  • 根本数据类型:包含数值型、布尔型、字符串类型和工夫戳类型;
  • 简单数据类型:数组、映射、构造;

根本数据类型

  • 通过思维导图来分类和了解:

  • 上面通过列表阐明所有的根本数据类型:
类型 形容 示例
BOOLEAN true/false TRUE
TINYINT 1 字节有符号整数,从 -128 到 127 1Y
SMALLINT 2 字节有符号整数, 从 -32768 到 32767 1S
INT 4 字节有符号整数, 从 -2147483648 到 2147483647 1
BIGINT 8 字节有符号整数,
从 -9223372036854775808 到 9223372036854775807
1L
FLOAT 4 字节单精度浮点数 1.0
DOUBLE 8 字节 (64 位) 双精度浮点数 1.0
DECIMAL 任意精度有符号小数 1.0
STRING 无下限可变长度字符串 ‘a’, “a”
VARCHAR 可变长度字符串 ‘a’, “a”
CHAR 固定长度字符串 ‘a’, “a”
BINARY 字节数组
TIMESTAMP 精度到纳秒的工夫戳 ‘2020-03-01 00:00:00’
DATE 日期 ‘2020-01-01’

对于三种字符串类型

  1. STRING,变长,无需最大长度申明,实践上能存储 2GB 字符;
  2. VARCHAR,变长,须要申明最大长度(1 到 65535 之间),例如 VARCHAR(100);
  3. CHAR,定长,如 CHAR(100);

罕用类型综合实战

  1. 启动 hive,进入交互模式,执行以下语句建表,字段类型是罕用的几种:
create table t1(
int_field  INT,
string_field STRING,
boolean_field BOOLEAN,
date_field DATE,
timestamp_field TIMESTAMP
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  '\t'
STORED AS TEXTFILE;
  1. 用 insert 语句新增一条记录:
insert into t1 
values 
(101, 'a101', true, '2020-01-01', '2020-03-01 00:00:00');
  1. 应用函数,在新增的记录的时候,将 <font color=”blue”>timestamp_field</font> 字段设置为以后工夫,留神和后面的 insert 语句比拟一下,应用函数时必须用到 <font color=”blue”>select XXX from XXX limit 1</font> 这样的语法:
insert into t1 
select 
103, 'a103', true, '2020-01-01', current_timestamp() 
from t1 limit 1;
  1. 看一下新增的两条记录:
hive> select * from t1;
OK
101    a101    true    2020-01-01    2020-03-01 00:00:00
103    a103    true    2020-01-01    2020-10-27 20:42:35.729
Time taken: 0.062 seconds, Fetched: 2 row(s)
  1. 查看以后工夫:
select unix_timestamp();

响应:

hive> select unix_timestamp();
OK
1603802631
Time taken: 0.028 seconds, Fetched: 1 row(s)
  1. 将 DATE 字段转为 TIMESTAMP:
select cast(date_field as timestamp) from t1;

响应:

hive> select cast(date_field as timestamp) from t1;
OK
2020-01-01 00:00:00
2020-01-01 00:00:00
Time taken: 0.051 seconds, Fetched: 2 row(s)
  1. 将 TIMESTAMP 字段转为 DATE:
select to_date(timestamp_field) from t1;

响应:

hive> select to_date(timestamp_field) from t1;
OK
2020-03-01
2020-10-27
Time taken: 0.063 seconds, Fetched: 2 row(s)
  1. 将 TIMESTAMP 字段转为 BIGINT:
select to_date(timestamp_field) from t1;

响应:

hive> select to_date(timestamp_field) from t1;
OK
2020-03-01
2020-10-27
Time taken: 0.063 seconds, Fetched: 2 row(s)

至此,hive 的根本数据类型曾经理解,接下来的章节咱们一起学习理解简单数据类型;

参考文档

https://stackoverflow.com/que…

你不孤独,欣宸原创一路相伴

  1. Java 系列
  2. Spring 系列
  3. Docker 系列
  4. kubernetes 系列
  5. 数据库 + 中间件系列
  6. DevOps 系列

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos

正文完
 0