hive的高级数据类型主要包括:数组类型、map类型、结构体类型、集合类型,以下将分别详细介绍。

1)数组类型

array_type:array<data_type>

-- 建表语句

create table test.array_table(

name   string,

age    int,

addr   array<string>

)

row format delimited fields terminated by ','

collection items terminated by ':'

;

hive> desc test.array_table;

OK

name                    string                                     

age                     int                                        

addr                    array<string>

-- 测试数据

chavin,28,beijing:shanghai:shenyang

nope,28,beijing:shanghai:taiyuan

wzq,28,beijing:dalian:shenyang:fuxin

zhangshuai,28,beijing:shenyang:fuxin

-- 加载数据

hive> load data local inpath '/home/hadoop/array_table.txt' into table test.array_table;

Loading data to table test.array_table

OK

Time taken: 0.918 seconds

-- 查询

hive> select * from test.array_table;

OK

chavin    28    ["beijing","shanghai","shenyang"]

nope    28    ["beijing","shanghai","taiyuan"]

wzq    28    ["beijing","dalian","shenyang","fuxin"]

zhangshuai    28    ["beijing","shenyang","fuxin"]

Time taken: 0.199 seconds, Fetched: 4 row(s)

hive> select addr[1] from test.array_table;

OK

shanghai

shanghai

dalian

shenyang

Time taken: 0.186 seconds, Fetched: 4 row(s)

hive> select addr[0] from test.array_table;

OK

beijing

beijing

beijing

beijing

Time taken: 0.212 seconds, Fetched: 4 row(s)

2)map类型

map_type:map<primary_type,data_type>

-- 建表语句

create table test.map_table(

name      string,

detail    map<string,string>

)

row format delimited fields terminated by '\t'

collection items terminated by ','

map keys terminated by ':'

;

hive> desc test.map_table;

OK

name                    string                                     

detail                  map<string,string>                         

Time taken: 0.146 seconds, Fetched: 2 row(s)

-- 测试数据

chavin    age:28,addr:beijing,phone:15998888888,email:811651208@qq.com

nope    age:28,addr:beijing,phone:13899998888,email:nope@gmail.com

wzq    age:28,addr:shanghai,phone:13899998888,email:wzq@gmail.com

zhangshuai    age:28,addr:tianjing,phone:13899998888,email:zs@gmail.com

-- 加载数据

hive> load data local inpath '/home/hadoop/map.txt' into table test.map_table;

Loading data to table test.map_table

OK

Time taken: 0.641 seconds

-- 查询数据

hive> select * from test.map_table;

OK

chavin    {"age":"28","addr":"beijing","phone":"15998888888","email":"811651208@qq.com"}

nope    {"age":"28","addr":"beijing","phone":"13899998888","email":"nope@gmail.com"}

wzq    {"age":"28","addr":"shanghai","phone":"13899998888","email":"wzq@gmail.com"}

zhangshuai    {"age":"28","addr":"tianjing","phone":"13899998888","email":"zs@gmail.com"}

Time taken: 0.183 seconds, Fetched: 4 row(s)

hive> select detail from test.map_table;

OK

{"age":"28","addr":"beijing","phone":"15998888888","email":"811651208@qq.com"}

{"age":"28","addr":"beijing","phone":"13899998888","email":"nope@gmail.com"}

{"age":"28","addr":"shanghai","phone":"13899998888","email":"wzq@gmail.com"}

{"age":"28","addr":"tianjing","phone":"13899998888","email":"zs@gmail.com"}

Time taken: 0.177 seconds, Fetched: 4 row(s)

hive> select name,detail['email'] from test.map_table;

OK

chavin    811651208@qq.com

nope    nope@gmail.com

wzq    wzq@gmail.com

zhangshuai    zs@gmail.com

Time taken: 0.179 seconds, Fetched: 4 row(s)

3)结构体类型

struct_type:struct<col_name:data_type,... ...>

-- 建表语句

create table test.struct_table(

name      string,

detail    struct<age:int,phone:string,email:string>

)

row format delimited fields terminated by '\t'

collection items terminated by ','

;

hive> desc test.struct_table;

OK

name                    string                                     

detail                  struct<age:int,phone:string,email:string>                       

Time taken: 0.139 seconds, Fetched: 2 row(s)

-- 测试数据

chavin    28,15998888888,811651208@qq.com

nope    28,13899998888,nope@gmail.com

wzq    28,13899998888,wzq@gmail.com

zhangshuai    28,13899998888,zs@gmail.com

-- 加载数据

hive> load data local inpath '/home/hadoop/struct.txt' into table test.struct_table;

Loading data to table test.struct_table

OK

Time taken: 0.564 seconds

-- 查询数据

hive> select * from test.struct_table;

OK

chavin    {"age":28,"phone":"15998888888","email":"811651208@qq.com"}

nope    {"age":28,"phone":"13899998888","email":"nope@gmail.com"}

wzq    {"age":28,"phone":"13899998888","email":"wzq@gmail.com"}

zhangshuai    {"age":28,"phone":"13899998888","email":"zs@gmail.com"}

Time taken: 0.183 seconds, Fetched: 4 row(s)

hive> select name,detail.email from test.struct_table;

OK

chavin    811651208@qq.com

nope    nope@gmail.com

wzq    wzq@gmail.com

zhangshuai    zs@gmail.com

Time taken: 0.869 seconds, Fetched: 4 row(s)

4)集合类型

union_type:uniontype<data_type,data_type,... ...>

-- 建表语句

create table test.union_table(

detail    uniontype<int,string>

)

row format delimited fields terminated by '\t'

collection items terminated by ','

;

hive> desc test.union_table;

OK                                    

detail                  uniontype<int,string>                       

Time taken: 0.141 seconds, Fetched: 2 row(s)

hive高级数据类型的更多相关文章

  1. 大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)

    第8章 压缩和存储(Hive高级)8.1 Hadoop源码编译支持Snappy压缩8.1.1 资源准备8.1.2 jar包安装8.1.3 编译源码8.2 Hadoop压缩配置8.2.1 MR支持的压缩 ...

  2. hadoop之hive集合数据类型

    除了string,boolean,date等基本数据类型之外,hive还支持三种高级数据类型: 1.ARRAY ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问.比如有一个A ...

  3. 大数据时代的技术hive:hive的数据类型和数据模型

    在上篇文章里,我列举了一个简单的hive操作实例,创建了一张表test,并且向这张表加载了数据,这些操作和关系数据库操作类似,我们常把hive和关系数据库进行比较,也正是因为hive很多知识点和关系数 ...

  4. Oracle11g R2学习系列 之八高级数据类型

    所谓的高级数据类型,就是大数据类型,即BCNB(助记词:BC牛逼)+XML数据类型. B:blob,用来存储可变长度的二进制数据. C:clob,主要用来存储可变长度的字符型数据,也就是其他数据库中提 ...

  5. Hive 5、Hive 的数据类型 和 DDL Data Definition Language)

    官方帮助文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL Hive的数据类型 -- 扩展数据类型data_t ...

  6. hadoop笔记之Hive的数据类型

    Hive的数据类型 Hive的数据类型 前面说过,Hive是一个数据仓库,相当于一个数据库.既然是数据库,那么就必须能创建表,既然有表,那么当中就有列,列中就有对应的类型 总的来讲,hive的数据类型 ...

  7. Delphi 基本数据类型列表 高级数据类型列表 字符类型查询列表清单

    原文:Delphi 基本数据类型列表 高级数据类型列表 字符类型查询列表清单 长长的列表文字类型文件 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 214 ...

  8. Scala进阶之路-高级数据类型之集合的使用

    Scala进阶之路-高级数据类型之集合的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala 的集合有三大类:序列 Seq.集 Set.映射 Map,所有的集合都扩展自 ...

  9. Scala进阶之路-高级数据类型之数组的使用

    Scala进阶之路-高级数据类型之数组的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的初始化方式 1>.长度不可变数组Array 注意:顾名思义,长度不可变数 ...

随机推荐

  1. Lambda表达式-聚合操作

    文章参考自博客:https://www.cnblogs.com/franson-2016/p/5593080.html 以及学习网站:how2java.cn 1.传统方式和聚合操作遍历数据的不同 传统 ...

  2. windows环境隐藏命令行窗口运行Flask项目

    Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启 ...

  3. Python学习笔记-Linux下安装Python

    Linux系统CentOS 1.安装依赖组件 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel s ...

  4. C#学习笔记-XML的读写(一)

    需要解析的配置XML <?xml version="1.0" encoding="utf-8" ?> <configurations> ...

  5. C++设计模式——备忘录模式

    备忘录模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对备忘录模式是这样说的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢 ...

  6. Groovy闭包

    定义 闭包(Closure)是一种数据类型,它代表一段可执行的代码.它可以作为方法的参数,或者返回值,也可以独立运行,定义如下: def xxx = {parameters -> code}   ...

  7. Java——静态变量/方法与实例变量/方法的区别

    静态只能调用静态 非静态: 对象名.方法名 package ti; //通过两个类 StaticDemo.LX4_1 说明静态变量/方法与实例变量/方法的区别. class StaticDemo { ...

  8. 【sklearn】中文文档

    看不见的叫做远方 飞机票 分类   回归     聚类 降维   模型选择  预处理

  9. Emacs Org-mode 3 表格

    Org 使用内置的表格编辑器.可以进行简单的表格编写和计算. Org中的表格 第一个非空字符“|” 视为表格的起始位置,后面的“|” 视为字段分隔符. 3.1 生成表格 编写表格时,可以将字段先写好, ...

  10. vue-创建新项目

    1.安装node,下载地址:https://nodejs.org/en/download/ 2.安装完成后打开cmd,输入node-v,出现版本信息说明安装成功 3.输入npm install -g ...