hive--[ array、map、struct]使用
复合数据类型
Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域a
Maps(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M['group']来获取
Arrays:array中的数据为相同类型,例如,假如array A中元素['a','b','c'],则A[1]的值为'b'
| 类型 | 解释 | 举例 |
| struct | 与c++中的结构体类似,可通过‘.’访问每个域的值,比如Struct{first string,last string},可以通过name.first访问第一个成员 | struct('john',‘doe’) |
| map | 存储key/value对,可通过['key']获取每个key的值,比如‘first’-->'john' 可通过name['last']获取last name。 | map('first','john',last,'doe') |
| array | 同种类型的数据集合,从0开始索引,比如['john','doe'],可通过name[1]获取doe | array('john','doe') |
使用实例
1.创建数据表
create table test1.employess1(
name string,
salary FLOAT,
subordinates ARRAY<string>,
deductions MAP<string,FLOAT>,
address STRUCT<stree:string,city:string,state:string,zip:int>)
partitioned by(country string,state string)
row format delimited
fields terminated by '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
stored as textfile;
- 'FIELDS TERMINATED BY' :字段与字段之间的分隔符
- ''COLLECTION ITEMS TERMINATED BY' :一个字段各个item的分隔符
- ‘MAP KEYS TERMINATED BY’ :key value分隔符
2.测试数据
John Doe 10000.0 Mary Sith,Todd Jones Federal Taxes:0.2,State Taxes:0.1,Insurance:0.1 1 Michigan Ave.,Chicago,IL,60600
Mary Smith 80000.0 Bill King Federal Taxes:0.2,State Taxes:0.05,Insurance:0.1 100 Ontario St.,Chicago,IL,60601
Todd Jones 70000.0 Federal Taxes:0.15,State Taxes:0.03,Insurance:0.1 200 Chicago Ave.,Oak Park,NY,60700
Bill King 60000.0 Federal Taxes:0.15,State Taxes:0.03,Insurance:0.1 300 Obscure Dr.,Obscur,CA,60100
注意一下字段直接的区分标识和map中key和value的区分标识。
3.查询数据
ARRAY查询:
select subordinates[] from test1.employess1;
结果:
Mary Sith
Bill King
NULL
NULL
MAP查询:
select deductions['Federal Taxes'] from test1.employess1;
结果:
0.2
0.2
0.15
0.15
查看map中的键值对个数:
select size(deductions) from test1.employess1;
结果:
3
3
3
3
STRUCT查询:
select address.state,address.stree from test1.employess1;
结果:
IL 1 Michigan Ave.
IL 100 Ontario St.
NY 200 Chicago Ave.
CA 300 Obscure Dr.
hive--[ array、map、struct]使用的更多相关文章
- hive复杂格式array,map,struct使用
-- 创建数据库表,以array作为数据类型 drop table if exists person; create table person( name string ,work_locations ...
- Spark存储Parquet数据到Hive,对map、array、struct字段类型的处理
利用Spark往Hive中存储parquet数据,针对一些复杂数据类型如map.array.struct的处理遇到的问题? 为了更好的说明导致问题的原因.现象以及解决方案,首先看下述示例: -- 创建 ...
- JavaScript Array map() 方法
语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值index:可选.当期元素的索引值ar ...
- 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
数组的方法 Array.map(); 栗子: var a=[1,2,,3]; var b=a.map( function(value){return value*value} ); alert(b); ...
- 兼容低版本JS的Array.map方法
前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...
- Array.from();Object.keys();Array.map()
Array.from():方法从一个类似数组或可迭代对象创建一个新的数组形式: const bar = ["a", "b", "c"]; A ...
- JavaScript 对象Array,Map,Set使用
for(int i = 0 :i < 3 ;i++ ){ //[重点说三遍] 在说明每个对象的用法之前,首先说明 JavaScript 对象的使用一定要注意浏览器的兼容性问题!尤其是IE的版本! ...
- 快速数组对象取值与数组映射新数组--array.map
array.map(callback,[ thisObject]); 1.map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组 a)array.map(()=>值); [1, ...
- JavaScript Array.map
Array.prototype.map() History Edit This article is in need of a technical review. Table of Contents ...
- js array map() 函数的简单使用
语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值 index:可选.当前元素的索引值 ...
随机推荐
- python入门(三):分支、循环、函数
1.分支 if循环格式:if condition_1: statement_block_1elif condition_2: statement_block_2else: statement_bloc ...
- 搭建一个SSM框架
刚好学完springMVC,mybatis简单的组合,总结一下 1.创建一个maven项目,引入jar包 一共这么多,除了oracle jar包是我手动添加到lib里,其他都是通过pom.xml引入的 ...
- web之Django之Form组件
Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功能: 生成HTML标签 验证用户 ...
- Hibernate 中多对多(many-to-many)关系的查询语句
两个对象: 学生表:Student 课程表:Course 两者的关系是多对多,当查询Student对象,并以Course对象作为条件时的sql语句写法如下: select pa from Studen ...
- iOS 保存异常日志
// // AppDelegate.m // test // // Created by Chocolate. on 14-4-16. // Copyright (c) 2014年 redasen. ...
- android sliding menu
https://github.com/jfeinstein10/SlidingMenu/
- [LeetCode] Reverse Lists
Well, since the head pointer may also be modified, we create a new_head that points to it to facilit ...
- AEcs6破解版下载
下载地址 http://pan.baidu.com/share/link?shareid=79184520&uk=1795677788 点击下载
- dist\_wepylogs.js
console.log('WePY开启错误监控'); console.warn("CLI报错:WARNING IN : src\pages\cloundAd.vue\n[xmldom war ...
- LIMIT Query Optimization
LIMIT limitFrom , perPageNum LIMIT offset, size MySQL :: MySQL 8.0 Reference Manual :: 13.2.10 SELEC ...