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中复杂数据类型操作相关推荐

  1. Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

    Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...

  2. 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

    https://www.zybuluo.com/aitanjupt/note/209941 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 〇.摘要 一.基础环境 二.数据存 ...

  3. python字典、列表、元祖使用场景_python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍...

    python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 元祖跟列表类似.只不过是有区别的. 如下: tuple(元祖英文) 跟列表类似, 元素不能 ...

  4. c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明

    c语言中浮点数和整数转换 C中的数据类型 (Data Types in C) There are several different ways to store data in C, and they ...

  5. redis(一) 安装以及基本数据类型操作

    redis(一) 安装以及基本数据类型操作 redis安装和使用 redis安装 wget http://download.redis.io/redis-stable.tar.gz tar zxvf ...

  6. matlab中的single是什么类型_MATLAB 中cell数据类型的使用方法

    讲真,我觉得最好的说明文档是MATLAB 帮助文档.但是由于朋友们可能看英文费劲,或者更喜欢看我的用"人话"讲解MATLAB用法.下面我从一个MATLAB深度用户的角度来讲解一下M ...

  7. android中的数据库操作(SQLite)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

  8. Oracle中的数据类型和数据类型之间的转换

    Oracle中的数据类型 /*ORACLE 中的数据类型:char 长度固定 范围:1-2000VARCHAR2 长度可变 范围:1-4000LONG 长度可变 最大的范围2gb 长字符类型numbe ...

  9. python中关键字 表示空类型_Python小知识:如何在Python 3中转换数据类型

    写在前面: 在Python中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...

最新文章

  1. 语言全局变量跨文件_C 语言课上不会讲的一些问题
  2. PNaCl:Google通过LLVM增强对Chrome中原生应用的支持
  3. Spark Streaming简介
  4. Kylin安装,Kylin网页版教程学习
  5. LeetCode—33. 搜索旋转排序数组
  6. mitmproxy抓包 | Python疑难测试场景mock实战(四)
  7. C++ Primer Plus 读书笔记(第8、9章)
  8. pytorch—torch.tensor.scatter操作解析
  9. Factory Method 抽象工厂模式(创建型)
  10. android 内嵌web,Android《内嵌浏览器-WebView》
  11. docx文档文字怎么加边框_Word技巧:怎么给文本加方框
  12. C Primer Plus(第6版)第一章复习题答案
  13. excel宏破解方法
  14. 2020全国各地男女身高排行出炉,从数据看南北差异到底有多大?
  15. Hi Developer,您有一份来自华为云学院的微服务开发攻略请查收
  16. 名词解释微型计算机,微机原理名词解释
  17. grub.exe和grldr的区别和联系
  18. Win10 This app can't run on this PC Cisco v*pn 0440
  19. C/C++ : 12-24小时制转换
  20. Node.js 和npm的安装(插件的安装)

热门文章

  1. 【深度学习篇】--神经网络中解决梯度弥散问题
  2. hdu 4850 字符串构造---欧拉回路构造序列 递归+非递归实现
  3. 使用Docker swarm构建wordpress集群
  4. QQ在线客服代码,飘浮在右侧的QQ客服js特效演示
  5. Git学习(一)git服务器的简易搭建
  6. MySQL查看与修改编码方式(mysql、数据库、表)
  7. pip安装python包出错:ctype = ctype.encode(default_encoding) # omit in 3.x!
  8. 支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
  9. CAT 性能优化的实践和思考
  10. git merge最简洁用法