复合数据类型

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]使用的更多相关文章

  1. hive复杂格式array,map,struct使用

    -- 创建数据库表,以array作为数据类型 drop table if exists person; create table person( name string ,work_locations ...

  2. Spark存储Parquet数据到Hive,对map、array、struct字段类型的处理

    利用Spark往Hive中存储parquet数据,针对一些复杂数据类型如map.array.struct的处理遇到的问题? 为了更好的说明导致问题的原因.现象以及解决方案,首先看下述示例: -- 创建 ...

  3. JavaScript Array map() 方法

    语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值index:可选.当期元素的索引值ar ...

  4. 数组的方法 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); ...

  5. 兼容低版本JS的Array.map方法

    前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...

  6. Array.from();Object.keys();Array.map()

    Array.from():方法从一个类似数组或可迭代对象创建一个新的数组形式: const bar = ["a", "b", "c"]; A ...

  7. JavaScript 对象Array,Map,Set使用

    for(int i = 0 :i < 3 ;i++ ){ //[重点说三遍] 在说明每个对象的用法之前,首先说明 JavaScript 对象的使用一定要注意浏览器的兼容性问题!尤其是IE的版本! ...

  8. 快速数组对象取值与数组映射新数组--array.map

    array.map(callback,[ thisObject]); 1.map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组 a)array.map(()=>值); [1, ...

  9. JavaScript Array.map

    Array.prototype.map() History Edit This article is in need of a technical review. Table of Contents ...

  10. js array map() 函数的简单使用

    语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值 index:可选.当前元素的索引值 ...

随机推荐

  1. jquery Fancybox使用教程

    Fancybox是一款基于jquery的对图片展示播放的插件,当然,它html文本.flash动画.iframe以及ajax也予以支持.还可以通过css自定义外观,阴影效果超级赞! 演示效果:http ...

  2. Linux的文件权限(简单易懂)

    学习这个章节,必须明白以下三个概念: 1.所有者 2.所属组 3.其他人 明白这三个概念后,接下来就学习文件的属性,那么文件的属性有什么呢?如何查看文件的属性? 在命令行下,执行 ls -l 可以得到 ...

  3. Dynamics CRM 系统自己定义部分的语言翻译

    Dynamics CRM 自带语言切换功能,在官网下载所需语言包安装后,在设置语言中就能看到你所加入的语言.勾选要启用的语言应用就可以.再打开系统设置--语言就能看到可更改用户界面语言的显示了. wa ...

  4. 【python】获取网页中中文内容并分词

    # -*- coding: utf-8 -*- import urllib2 import re import time import jieba url="http://www.baidu ...

  5. 图像jpeg压缩

    图像分割 8X8 颜色空间转换RGB->YCbCr 3个8X8的矩阵 离散余弦变换:(Discrete cosine transform),简称DCT. DCT转换后的数组中第一个是一个直线数据 ...

  6. AderTemplate

    http://www.cnblogs.com/kwklover/archive/2007/07/12/815509.html 概述 AderTemplate是一个小型的模板引擎.无论是拿来直接使用还是 ...

  7. iOS-本地沙盒路径

    沙盒几个路径: 沙盒里的文件夹包括Documents.Library.tmp.这三个文件夹的作用请点击这里.接下来我们来讲解如何获取Documents.Library.tmp的路径. 获取沙盒根目录 ...

  8. CNBlog客户端--第一阶段记录

    开始 五一小长假由于没有出去玩,所以我就用来继续写我的 CNBlog Android 客户端!首先呢!先上图!让大家看看,我做到哪儿了!! 不知道大家看了是什么感觉哈!有意见请评论哦!! 完成度以及遇 ...

  9. iOS UITextView 展示html

    NSString *htmlString = @"<h1>Header</h1><h2>Subheader</h2><p>Some ...

  10. English Grammar

    What is Grammar?