关于hive中的array,map,struct
array<数据类型>
弹珠警察 白宝,黑宝,蓝宝,绿宝
龙珠超 孙悟空,贝吉塔,比鲁斯,布罗利
#建表语句
create table if not exists arr1(
province string,
city array<String>
)
row format delimited fields terminated by '\t'
collection items terminated by ',' #使用逗号分割数组元素
;
#加载数据
load data local inpath '/root/hivedata/arr.txt' into table arr1;
#结果查询
hive (test)> select * from arr2;
OK
弹珠警察 ["白宝","黑宝","蓝宝","绿宝"]
龙珠超 ["孙悟空","贝吉塔","比鲁斯","布罗利"]
Time taken: 0.094 seconds, Fetched: 2 row(s)
这样,一个字段应该被存进数组(集合)的值就被存进了数组(集合)。
#直接通过下表查询
hive (test)> select province,city[0] from arr2 ;
OK
弹珠警察 白宝
龙珠超 孙悟空
Time taken: 0.13 seconds, Fetched: 2 row(s)
也可以对其展开(行转列)
hive (test)> select province,person from arr2 lateral view explode(city) city as person;
OK
弹珠警察 白宝
弹珠警察 黑宝
弹珠警察 蓝宝
弹珠警察 绿宝
龙珠超 孙悟空
龙珠超 贝吉塔
龙珠超 比鲁斯
龙珠超 布罗利
Time taken: 0.127 seconds, Fetched: 8 row(s)
也可以将上一步转成列的数据再转成行
hive (test)> select province,collect_set(person) as city > from (select province,person from arr2 lateral view explode(city) city as person) t1> group by province> ;
......
OK
弹珠警察 ["白宝","黑宝","蓝宝","绿宝"]
龙珠超 ["孙悟空","贝吉塔","比鲁斯","布罗利"]
Time taken: 1.839 seconds, Fetched: 2 row(s)
map<键类型,值类型>
拉面 面:200,牛肉:50,葱花:10
黄焖鸡 米:200,鸡肉:150,土豆:300
#建表
create table if not exists map1(
uname string,
itemIds map<String,int>
)
row format delimited fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
;
#加载数据
load data local inpath '/root/hivedata/map.txt' into table map1;
#查看
hive (test)> select * from map1;
OK
map1.uname map1.itemids
拉面 {"面":200,"牛肉":50,"葱花":10}
黄焖鸡 {"米":200,"鸡肉":150,"土豆":300}
Time taken: 0.1 seconds, Fetched: 2 row(s)
查询数据(通过键获取值)
hive (test)> select uname,itemIds['面'] from map1;
OK
拉面 200
黄焖鸡 NULL
Time taken: 0.17 seconds, Fetched: 2 row(s)
展开(行转列)
hive (test)> select uname,name,num from map1 lateral view explode(itemIds) Ids as name,num;
OK
拉面 面 200
拉面 牛肉 50
拉面 葱花 10
黄焖鸡 米 200
黄焖鸡 鸡肉 150
黄焖鸡 土豆 300
Time taken: 0.124 seconds, Fetched: 6 row(s)
拼接(concat)
hive (test)> select uname,concat(name,':',num) from (select uname,name,num from map1 lateral view explode(itemIds) Ids as name,num)t1;
OK
拉面 面:200
拉面 牛肉:50
拉面 葱花:10
黄焖鸡 米:200
黄焖鸡 鸡肉:150
黄焖鸡 土豆:300
Time taken: 0.143 seconds, Fetched: 6 row(s)hive (test)> select uname,collect_set(concat(name,':',num)) from ( select uname,name,num from map1 lateral view explode(itemIds) Ids as name,num) t1 group by uname;
......
OK
拉面 ["面:200","牛肉:50","葱花:10"]
黄焖鸡 ["米:200","鸡肉:150","土豆:300"]
Time taken: 1.736 seconds, Fetched: 2 row(s)
struct<键:类型,键:类型…>
张三 河南省,洛阳市,月亮区,快乐大街11号
李四 河北省,石家庄市,太阳区,幸福大街21号
#建表
create table if not exists str(
uname string,
addr struct < province:string,city:string,xian:string,dadao:string >)
row format delimited fields terminated by '\t'
collection items terminated by ',';
#加载数据
load data local inpath '/root/hivedata/struct.txt' into table str;
#查看
hive (test)> select * from str;
OK
str.uname str.addr
张三 {"province":"河南省","city":"洛阳市","xian":"月亮区","dadao":"快乐大街11号"}
李四 {"province":"河北省","city":"石家庄市","xian":"太阳区","dadao":"幸福大街21号"}
Time taken: 0.086 seconds, Fetched: 2 row(s)
查询
hive (test)> select uname,addr.province,addr.city from str;
OK
uname province city
张三 河南省 洛阳市
李四 河北省 石家庄市
Time taken: 0.072 seconds, Fetched: 2 row(s)
总结:感觉array,map,struct是层层递进的,在前一层的基础上增加变化。
关于hive中的array,map,struct相关推荐
- hive中存Array类型的数据的案例,将字符串的数组格式转成数组的字符串,自定义函数方式处理‘[12,23,23,34]‘字符串格式的数据为array<int>格式的数据。
1.创建表带有Array的表: create table t_afan_test ( info1 array<int>, info2 array<string> ) ROW F ...
- SQL老司机,在SQL中计算 array map json数据
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据. 场景 通常,我 ...
- hive中,向map类型插入数据时,需要str_to_map一下
如题 转载于:https://www.cnblogs.com/hark0623/p/5064670.html
- hive中操作struct与map三例
例子一 beeline中进行: create table test (id int,course struct<course:string,score:int>) row format d ...
- hive中array嵌套map以及行转列的使用
1. 数据源信息 {"student": {"name":"king","age":11,"sex" ...
- 关于hive中Map join 时大表left join小表的问题
在hive中,(启用Map join时) 大表left join小表,加载从右向左,所以小表会加载进内存,存储成map键值对,通过大表驱动小表,来进行join,即大表中的join字段作为key 来获取 ...
- Hive中的map join、left semi join和sort merge bucket join
map join map join是将join双方比较小的表直接分发到各个 map进程的内存中,在map进程中进行join操作,这样就不用进行reduce步骤,从而提高了速度. 如果不指定mapjoi ...
- HIVE中的表以及语法
2019独角兽企业重金招聘Python工程师标准>>> HIVE中的表以及语法 一.HIVE的表 HIVE使用的功能性的表格分为四种:内部表.外部表.分区表.分桶表. 1.内部表.外 ...
- Hive中实现有序,有序concat拼接,有序集合,hive方法操作命令,与自带方法列表
前言 记得以前用过这个函数,这次开发怎么都找不到了,不常用的原因,也是笔记没做好 方法一 GROUP_CONCAT(distinct id ORDER BY id DESC SEPARATOR '_' ...
最新文章
- 资源 | 做一款炫酷的机器人需要哪些学习资源(机器人资源Awesome系列)
- Ubuntu下配置samba实现文件夹共享
- Linux学习日记——源码编译Apache
- django本地安装mysql_Ununtu 15.04 安装MySql(Django连接Mysql)
- (转)C#开发微信门户及应用(1)--开始使用微信接口
- 如何安装mavaen_Maven的安装及配置
- linux vsftp配置用户目录,RedHat 5下VSFTP的配置与公共目录的设置
- 360html5播放加速,总结:没有讨论加速问题,“视频快速观看”完全支持360种浏览器...
- SWFTOOLS PDF2SWF 参数详解(转)
- windows Git Gui 汉化
- linux 打开关闭CPU超线程和查看逻辑CPU的个数
- VS+QT5报错:LNK2019无法解析的外部符号“_declspec(dllimport)public:bool_cdecl QSerialPort“
- android ibeacon模拟器,未使用信标模拟器检测到iBeacon
- 分门别类刷leetcode——链表
- 浅谈百度闪电算法以及网站HTTPS(图文)
- 【关于memset和0x3f3f3f3f】
- QT5串口编程——编写简单的上位机
- 基础集合论 第一章 集合与集合的运算
- SAP假脱机打印解决方法
- TCP|Android上TCP通信实现
热门文章
- Android Native APP开发笔记:从新建到打包流程记录
- LOJ6356四色灯
- 征服英语的30个好习惯 --- 李阳
- PaddlePaddle/PaddleX本地离线安装(分别以C++和Python为例)
- MBA 拓展训练总结
- Java choose函数_SQL SERVER 2012新增函数之逻辑函数CHOOSE详解
- 如何使用开源项目申请jetbrains激活账号01
- 论文阅读笔记5-An Asynchronous Energy-Efficient CNN Accelerator with Reconfigurable Architecture
- 文件操作【fopen/fclose/fputs/fgets】【C语言/进阶】
- Swift 常见问题