hive array、map、struct使用
hive提供了复合数据类型:
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使用
建表:
- hive> create table student_test(id INT, info struct<name:STRING, age:INT>)
- > ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
- > COLLECTION ITEMS TERMINATED BY ':';
- OK
- Time taken: 0.446 seconds
'FIELDS TERMINATED BY' :字段与字段之间的分隔符
''COLLECTION ITEMS TERMINATED BY' :一个字段各个item的分隔符
导入数据:
- $ cat test5.txt
- 1,zhou:30
- 2,yan:30
- 3,chen:20
- 4,li:80
- hive> LOAD DATA LOCAL INPATH '/home/work/data/test5.txt' INTO TABLE student_test;
- Copying data from file:/home/work/data/test5.txt
- Copying file: file:/home/work/data/test5.txt
- Loading data to table default.student_test
- OK
- Time taken: 0.35 seconds
查询:
- hive> select info.age from student_test;
- Total MapReduce jobs = 1
- ......
- Total MapReduce CPU Time Spent: 490 msec
- OK
- 30
- 30
- 20
- 80
- Time taken: 21.677 seconds
Array使用
建表:
- hive> create table class_test(name string, student_id_list array<INT>)
- > ROW FORMAT DELIMITED
- > FIELDS TERMINATED BY ','
- > COLLECTION ITEMS TERMINATED BY ':';
- OK
- Time taken: 0.099 seconds
导入数据:
- $ cat test6.txt
- 034,1:2:3:4
- 035,5:6
- 036,7:8:9:10
- hive> LOAD DATA LOCAL INPATH '/home/work/data/test6.txt' INTO TABLE class_test ;
- Copying data from file:/home/work/data/test6.txt
- Copying file: file:/home/work/data/test6.txt
- Loading data to table default.class_test
- OK
- Time taken: 0.198 seconds
查询:
- hive> select student_id_list[3] from class_test;
- Total MapReduce jobs = 1
- ......
- Total MapReduce CPU Time Spent: 480 msec
- OK
- 4
- NULL
- 10
- Time taken: 21.574 seconds
Map使用
建表:
- hive> create table employee(id string, perf map<string, int>)
- > ROW FORMAT DELIMITED
- > FIELDS TERMINATED BY '\t'
- > COLLECTION ITEMS TERMINATED BY ','
- > MAP KEYS TERMINATED BY ':';
- OK
- Time taken: 0.144 seconds
‘MAP KEYS TERMINATED BY’ :key value分隔符
导入数据:
- $ cat test7.txt
- 1 job:80,team:60,person:70
- 2 job:60,team:80
- 3 job:90,team:70,person:100
- hive> LOAD DATA LOCAL INPATH '/home/work/data/test7.txt' INTO TABLE employee;
查询:
- hive> select perf['person'] from employee;
- Total MapReduce jobs = 1
- ......
- Total MapReduce CPU Time Spent: 460 msec
- OK
- 70
- NULL
- 100
- Time taken: 20.902 seconds
- hive> select perf['person'] from employee where perf['person'] is not null;
- Total MapReduce jobs = 1
- .......
- Total MapReduce CPU Time Spent: 610 msec
- OK
- 70
- 100
- Time taken: 21.989 seconds
- hive>
- <span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
- </span></span>
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:可选.当前元素的索引值 ...
随机推荐
- vue-router-2-动态路由配置
const User = { template: '<div>User{{ $route.params.id }}</div>' } const router = new Vu ...
- angular4-表单
导入表单模块 import { FormsModule } from '@angular/forms'; // ... @NgModule({ imports: [BrowserModule, For ...
- 7.1 C++模板基本概念及语法 《C++模板与标准模板库》
参考:http://www.weixueyuan.net/view/6398.html 总结: 模板是另一种代码重用机制. 需要设计的几个类,其功能都是一样的,仅仅只是需要操作的数据类型不同. 有更好 ...
- [深入理解Java虚拟机]<自动内存管理>
Overview 走近Java:介绍Java发展史 第二部分:自动内存管理机制 程序员把内存控制的权利交给了Java虚拟机,从而可以在编码时享受自动内存管理.但另一方面一旦出现内存泄漏和溢出等问题,就 ...
- 手机号的 AES/CBC/PKCS7Padding 加解密
前言:接口中上次的手机号码和密码是传入的加密的,模拟自动化的时候也需要先对数据进行加密 1.各种语言实现 网上已经各种语言实现好的AES加密,可以点击查看:http://outofmemory.cn/ ...
- lvs的FULLNAT
- MYSQL MyISAM与InnoDB对比
1. 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理): (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁: (3)sel ...
- python day16--面向对象(01)
一.概念 类:具有相同属性的一类事物 比如人类是类,人类中的某个人是对象.食物是一类,米饭是一个对象 class Person: '''类体:两部分:变量部分,方法(函数)部分''' mind = ' ...
- vue mapbox 地图 demo
执行以下命令: npm install --save mapbox-gl// cnpm install --save mapbox-gl <template> <div style= ...
- React-native-camera error with Expo: undefined is not an object (evaluating 'CameraManager.Aspect')
React-native-camera error with Expo: undefined is not an object (evaluating 'CameraManager.Aspect') ...