Hive数据类型和文件格式

Hive数据类型和文件格式

Hive支持关系型数据库的绝大多数基本数据类型和4和几个集合


image.png
image.png

隐似转换

Hive隐似转换.png

显示转换:

hive> select cast('1111s' as int);
OK
NULL
hive> select cast('1111' as int);
OK
1111
集合数据类型

Hive集合类型:array、map、struct、union


image.png
hive> select array(1,2,3);
OK
[1,2,3]
-- 使用 [] 访问数组元素
hive> select arr[0] from (select array(1,2,3) arr) tmp;
hive> select map('a', 1, 'b', 2, 'c', 3);
OK
{"a":1,"b":2,"c":3}
-- 使用 [] 访问map元素
hive> select mymap["a"] from (select map('a', 1, 'b', 2, 'c', 3) as mymap) tmp;
-- 使用 [] 访问map元素。 key 不存在返回 NULL
hive> select mymap["x"] from (select map('a', 1, 'b', 2, 'c', 3) as mymap) tmp;
NULL
hive> select struct('username1', 7, 1288.68); OK {"col1":"username1","col2":7,"col3":1288.68}
-- 给 struct 中的字段命名
hive> select named_struct("name", "username1", "id", 7, "salary", 12880.68);
OK
{"name":"username1","id":7,"salary":12880.68}
-- 使用 列名.字段名 访问具体信息 
hive> select userinfo.id
> from (select named_struct("name", "username1", "id", 7, "salary", 12880.68) userinfo) tmp;
-- union 数据类型
hive> select create_union(0, "zhansan", 19, 8000.88) uinfo;
文件文件数据编码
vim /home/hadoop/data/s1.dat
### 输入下面内容
666^Alisi^A18^Aread^Bgame^Ajava^C97^Bhadoop^C87
### 进入hive
create table s1(
  id int,
  name string,
  age int,
  hobby array<string>,
  score map<string, int>
);
load data local inpath '/home/hadoop/data/s1.dat' into table s1; 
select * from s1;

Hive默认分隔符

image.png

在 vi 中输入特殊字符:

  • (Ctrl + v) + (Ctrl + a) => ^A
  • (Ctrl + v) + (Ctrl + b) => ^B
  • (Ctrl + v) + (Ctrl + c) => ^C
读时模式

传统数据库:写数据检测,不符合拒绝加载数据(写时模式)

Hive:读数据不合法显示NULL,加载数据不校验。优点:加载数据快,缺点:有NULL值(读时模式)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容