insert into hive分区表数据类型不一致_hive学习笔记之一:基本数据类型

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

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

关于hive学习笔记系列

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

环境信息

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

  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支持基本和复杂数据类型:

  • 基本数据类型:包括数值型、布尔型、字符串类型和时间戳类型;
  • 复杂数据类型:数组、映射、结构;

基本数据类型

  • 通过思维导图来分类和理解:
d2348ebe43a10bf68f8eec37418da908.png
  • 下面通过列表说明所有的基本数据类型:
3b2f721639c887fadb172e6f7d30d86f.png

关于三种字符串类型

  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  ''STORED AS TEXTFILE;
  1. 用insert语句新增一条记录:
insert into t1 values (101, 'a101', true, '2020-01-01', '2020-03-01 00:00:00');
  1. 使用函数,在新增的记录的时候,将timestamp_field字段设置为当前时间,注意和前面的insert语句比较一下,使用函数时必须用到select XXX from XXX limit 1这样的语法:
insert into t1 select 103, 'a103', true, '2020-01-01', current_timestamp() from t1 limit 1;
  1. 看一下新增的两条记录:
hive> select * from t1;OK101a101true2020-01-012020-03-01 00:00:00103a103true2020-01-012020-10-27 20:42:35.729Time taken: 0.062 seconds, Fetched: 2 row(s)
  1. 查看当前时间:
select unix_timestamp();

响应:

hive> select unix_timestamp();OK1603802631Time 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;OK2020-01-01 00:00:002020-01-01 00:00:00Time 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;OK2020-03-012020-10-27Time 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;OK2020-03-012020-10-27Time taken: 0.063 seconds, Fetched: 2 row(s)

至此,hive的基本数据类型已经了解,接下来的章节咱们一起学习了解复杂数据类型;

参考文档

https://stackoverflow.com/questions/37863194/insert-timestamp-into-hive/37868132

欢迎关注我的公众号:程序员欣宸

e0476a8d7abbca17ddd391ea60bd689e.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值