[TOC]
# hive的数据类型
Hive的内置数据类型可以分为两大类:
1. 基础数据类型;
2. 复杂数据类型
# hive基本数据类型
基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。
![](https://box.kancloud.cn/0d1270776b4693a0e3fd32dcb9c4de79_804x503.png)
# hive集合类型
集合类型主要包括:array,map,struct等,hive的特性支持集合类型,这特性是关系型数据库所不支持的,利用好集合类型可以有效提升SQL的查询速率。
## 集合类型之array
`collection items terminated by '-';`这就是指定集合类型的分隔符
1. 先创建一张表
~~~
create table t_array(id int,name string,hobby array<string>)
row format delimited
fields terminated by ','
collection items terminated by '-';
~~~
2. 准备数据文件 array.txt
~~~
1,zhangsan,唱歌-跳舞-游泳
2,lisi,打游戏-篮球
~~~
3. 加载数据文件到t_array表中
~~~
load data local inpath '/root/array.txt' into table t_array;
~~~
4. 查询数据
~~~
select id ,name,hobby[0],hobby[1] from t_array;
~~~
注意:array的访问元素和java中是一样的,这里通过索引来访问。
## 集合类型之map
`map keys terminated by ':' ;`map的分割符,就是k-v键值对之间的分割符
1. 先创建一张表
~~~
create table t_map(id int,name string,hobby map<string,string>)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':' ;
~~~
2. 准备数据文件 map.txt
~~~
1,zhangsan,唱歌:非常喜欢-跳舞:喜欢-游泳:一般般
2,lisi,打游戏:非常喜欢-篮球:不喜欢
~~~
3. 加载数据文件到t_map表中
~~~
load data local inpath '/root/map.txt' into table t_map;
~~~
4. 查询数据
~~~
select id,name,hobby['唱歌'] from t_map;
~~~
注意:map的访问元素中的value和java中是一样的,这里通过key来访问。
## 集合类型之struct
1. 先创建一张表
~~~
create table t_struct(id int,name string,address struct<country:string,city:string>)
row format delimited
fields terminated by ','
collection items terminated by '-';
~~~
2. 准备数据文件 struct.txt
~~~
1,zhangsan,china-beijing
2,lisi,USA-newyork
~~~
3. 加载数据文件到t_struct表中
~~~
load data local inpath '/root/struct.txt' into table t_struct;
~~~
4. 查询数据
~~~
select id,name,address.country,address.city from t_struct;
~~~
总结:struct访问元素的方式是通过.符号
- linux
- 常用命令
- 高级文本命令
- 面试题
- redis
- String
- list
- hash
- set
- sortedSet
- 案例-推荐
- java高级特性
- 多线程
- 实现线程的三种方式
- 同步关键词
- 读写锁
- 锁的相关概念
- 多线程的join
- 有三个线程T1 T2 T3,保证顺序执行
- java五种线程池
- 守护线程与普通线程
- ThreadLocal
- BlockingQueue消息队列
- JMS
- 反射
- volatile
- jvm
- IO
- nio
- netty
- netty简介
- 案例一发送字符串
- 案例二发送对象
- 轻量级RPC开发
- 简介
- spring(IOC/AOP)
- spring初始化顺序
- 通过ApplicationContextAware加载Spring上下文
- InitializingBean的作用
- 结论
- 自定义注解
- zk在框架中的应用
- hadoop
- 简介
- hadoop集群搭建
- hadoop单机安装
- HDFS简介
- hdfs基本操作
- hdfs环境搭建
- 常见问题汇总
- hdfs客户端操作
- mapreduce工作机制
- 案列-单词统计
- 局部聚合Combiner
- 案列-流量统计(分区,排序,比较)
- 案列-倒排索引
- 案例-共同好友
- 案列-join算法实现
- 案例-求topN(分组)
- 自定义inputFormat
- 自定义outputFormat
- 框架运算全流程
- mapreduce的优化方案
- HA机制
- Hive
- 安装
- DDL操作
- 创建表
- 修改表
- DML操作
- Load
- insert
- select
- join操作
- 严格模式
- 数据类型
- shell参数
- 函数
- 内置运算符
- 内置函数
- 自定义函数
- Transform实现
- 特殊分割符处理
- 案例
- 级联求和accumulate
- flume
- 简介
- 安装
- 常用的组件
- 拦截器
- 案例
- 采集目录到HDFS
- 采集文件到HDFS
- 多个agent串联
- 日志采集和汇总
- 自定义拦截器
- 高可用配置
- 使用注意
- sqoop
- 安装
- 数据导入
- 导入数据到HDFS
- 导入关系表到HIVE
- 导入表数据子集
- 增量导入
- 数据导出
- 作业
- 原理
- azkaban
- 简介
- 安装
- 案例
- 简介
- command类型单一job
- command类型多job工作流flow
- HDFS操作任务
- mapreduce任务
- hive脚本任务
- hbase
- 简介
- 安装
- 命令行
- 基本CURD
- 过滤器查询
- 系统架构
- 物理存储
- 寻址机制
- 读写过程
- Region管理
- master工作机制
- 建表高级属性
- 与mapreduce结合
- 协处理器
- 点击流平台开发
- 简介
- storm
- 简介
- 安装
- 集群启动及任务过程分析
- 单词统计
- 并行度
- ACK容错机制
- ACK简介