HiveSQL中复杂数据类型操作
HiveSQL运行优化参数配置
HiveSQL常用数据处理语句
HiveSQL中复杂数据类型操作
Hive有三种复杂数据类型ARRAY、MAP和STRUCT,复杂数据类型允许任意层次的嵌套。
目录
array类型
map类型
struct类型
array类型
name与locations之间制表符分隔,locations中元素之间逗号分隔,数据样本集为:
zhangsan beijing,shanghai,tianjin,hangzhou
lisi changchu,chengdu,wuhan,beijing
建表语句
create table hive_array(name string, work_locations array<string>)
row format delimited fields terminated by '\t'
COLLECTION ITEMS TERMINATED BY ',';
导入数据
load data local inpath '/home/zhangfei/data/work_locations.txt' overwrite into table hive_array;
常用查询
select * from hive_array;
zhangsan ["beijing","shanghai","tianjin","hangzhou"]
lisi ["changchu","chengdu","wuhan","beijing"]
array_contains常与where子句连用
select name, work_locations[0] location from hive_array;
--取array的第一个元素 work_locations[0],同样是采用下标的方式,下标从0开始select name, size(work_locations) location from hive_array;
--取array的长度size(work_locations)select * from hive_array where array_contains(work_locations,'tianjin');
--取判断为ture的数据 array_contains(work_locations,'tianjin')select explode(work_locations) from hive_array ;
--explode()会将数组元素展开展示
注意:explode()函数只是生成了一个数据的展示方式,无法在表中产生一个新的数据列,即select name,explode(work_locations) from hive_array 会报错的
map类型
数据格式
字段与字段分隔符: “,”;需要map字段之间的分隔符:"#";map内部k-v分隔符:":"
zhangsan, father:xiaoming #mother:xiaohuang #brother:xiaoxu,28
lisi, father:mayun #mother:huangyi #brother:guanyu,22
wangwu, father:wangjianlin #mother:ruhua #sister:jingtian,29
mayun, father:mayongzhen#mother:angelababy,26
建表语句
create table hive_map(
id int, name string, members map<string,string>, age int
)
row format delimited
fields terminated by ','
COLLECTION ITEMS TERMINATED BY '#' ---条目分隔符
MAP KEYS TERMINATED BY ':'
;
---k-v分隔符
导入数据
load data local inpath '/home/zhangfei/data/hive_map.txt' overwrite into table hive_map;
常用查询
select * from hive_map;
zhangsan {"father":"xiaoming","mother":"xiaohuang","brother":"xiaoxu"} 28
lisi {"father":"mayun","mother":"huangyi","brother":"guanyu"} 22
wangwu {"father":"wangjianlin","mother":"ruhua","sister":"jingtian"} 29
mayun {"father":"mayongzhen","mother":"angelababy"} 26
查询语句
select id, name, members['father'] father, members['mother'] mother, age from hive_map;
select id, name, map_keys(members) as relation from hive_map;
select id, name, map_values(members) as relation from hive_map;
select id,name,size(members) num from hive_map;
select * from hive_map where array_contains(map_keys(members), 'brother');
select id,name, members['brother'] brother from hive_map where array_contains(map_keys(members), 'brother');
struct类型
数据格式
说明:字段之间#分割,第二个字段之间冒号分割
192.168.1.1 # zhangsan:40
192.168.1.2 # lisi:50
192.168.1.3 # wangwu:60
192.168.1.4 # zhaoliu:70
建表语句
create table hive_struct(
ip string, info struct<name:string, age:int>
)
row format delimited
fields terminated by '#'
COLLECTION ITEMS TERMINATED BY ':';
导入数据
load data local inpath '/home/zhangfei/data/hive_struct.txt' into table hive_struct;
常用查询
select * from hive_struct;
ip info
192.168.1.1 {"name":"zhangsan","age":40}
192.168.1.2 {"name":"lisi","age":50}
192.168.1.3 {"name":"wangwu","age":60}
192.168.1.4 {"name":"zhaoliu","age":70}
可直接通过.访问数据
select ip, info.name from hive_struct;
192.168.1.1 zhangsan
192.168.1.2 lisi
192.168.1.3 wangwu
192.168.1.4 zhaoliu
HiveSQL中复杂数据类型操作相关推荐
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...
- 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作
https://www.zybuluo.com/aitanjupt/note/209941 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 〇.摘要 一.基础环境 二.数据存 ...
- python字典、列表、元祖使用场景_python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍...
python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 元祖跟列表类似.只不过是有区别的. 如下: tuple(元祖英文) 跟列表类似, 元素不能 ...
- c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明
c语言中浮点数和整数转换 C中的数据类型 (Data Types in C) There are several different ways to store data in C, and they ...
- redis(一) 安装以及基本数据类型操作
redis(一) 安装以及基本数据类型操作 redis安装和使用 redis安装 wget http://download.redis.io/redis-stable.tar.gz tar zxvf ...
- matlab中的single是什么类型_MATLAB 中cell数据类型的使用方法
讲真,我觉得最好的说明文档是MATLAB 帮助文档.但是由于朋友们可能看英文费劲,或者更喜欢看我的用"人话"讲解MATLAB用法.下面我从一个MATLAB深度用户的角度来讲解一下M ...
- android中的数据库操作(SQLite)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- Oracle中的数据类型和数据类型之间的转换
Oracle中的数据类型 /*ORACLE 中的数据类型:char 长度固定 范围:1-2000VARCHAR2 长度可变 范围:1-4000LONG 长度可变 最大的范围2gb 长字符类型numbe ...
- python中关键字 表示空类型_Python小知识:如何在Python 3中转换数据类型
写在前面: 在Python中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...
最新文章
- 语言全局变量跨文件_C 语言课上不会讲的一些问题
- PNaCl:Google通过LLVM增强对Chrome中原生应用的支持
- Spark Streaming简介
- Kylin安装,Kylin网页版教程学习
- LeetCode—33. 搜索旋转排序数组
- mitmproxy抓包 | Python疑难测试场景mock实战(四)
- C++ Primer Plus 读书笔记(第8、9章)
- pytorch—torch.tensor.scatter操作解析
- Factory Method 抽象工厂模式(创建型)
- android 内嵌web,Android《内嵌浏览器-WebView》
- docx文档文字怎么加边框_Word技巧:怎么给文本加方框
- C Primer Plus(第6版)第一章复习题答案
- excel宏破解方法
- 2020全国各地男女身高排行出炉,从数据看南北差异到底有多大?
- Hi Developer,您有一份来自华为云学院的微服务开发攻略请查收
- 名词解释微型计算机,微机原理名词解释
- grub.exe和grldr的区别和联系
- Win10 This app can't run on this PC Cisco v*pn 0440
- C/C++ : 12-24小时制转换
- Node.js 和npm的安装(插件的安装)
热门文章
- 【深度学习篇】--神经网络中解决梯度弥散问题
- hdu 4850 字符串构造---欧拉回路构造序列 递归+非递归实现
- 使用Docker swarm构建wordpress集群
- QQ在线客服代码,飘浮在右侧的QQ客服js特效演示
- Git学习(一)git服务器的简易搭建
- MySQL查看与修改编码方式(mysql、数据库、表)
- pip安装python包出错:ctype = ctype.encode(default_encoding) # omit in 3.x!
- 支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
- CAT 性能优化的实践和思考
- git merge最简洁用法