hive语法中主要提供了以下复合数据类型:

1)Structs: structs内部的数据可以通过DOT(.)来存取。例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域a。

2)Map(K-V对):访问指定域可以通过["指定域名称"]进行。例如,一个Map中M包含了一个group->gid的K-V对,gid的值可以通过M['group']来获取。

3)Array:array中的数据为相同类型。例如,假如array A中元素['a','b','c'],则A[1]的值为'b'

1、Struct使用

1) 建表

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.386 seconds

 hive> show tables;

 OK

 student_test

 Time taken: 0.046 seconds, Fetched: 1 row(s)

'FIELDS TERMINATED BY' :字段与字段之间的分隔符。'COLLECTION ITEMS TERMINATED BY' :一个字段各个item的分隔符。

2) 导入数据

[hadoop@master ~]$ cd /home/hadoop/test

[hadoop@master test]$ sudo vim test1.txt

1,zhou:30

2,yan:30

3,chen:20

4,li:80

[hadoop@master test]$ ll

total 12

-rw-r--r-- 1 root root  43 May 24 03:40 test1.txt

-rw-r--r-- 1 root root 106 May 18 04:41 test.txt

-rw-r--r-- 1 root root 421 May 18 04:03 user.txt

hive> load data local inpath '/home/hadoop/test/test1.txt' into table student_test;

Loading data to table hive.student_test

Table hive.student_test stats: [numFiles=1, totalSize=37]

OK

Time taken: 0.363 seconds

3) 查询数据

hive> select info.age from student_test;
OK
30
30
20
80
Time taken: 0.078 seconds, Fetched: row(s)

2、Array使用

1) 建表

hive> create table class_test(name string, stu_id_list array<int>) row format delimited fields terminated by ',' collection items terminated by ':';
OK
Time taken: 0.079 seconds

2) 导入数据

[hadoop@master test]$ sudo vim test2.txt
034,1:2:3:4
035,5:6
036,7:8:9:10
hive> load data local inpath '/home/hadoop/test/test2.txt' into table class_test;
Loading data to table hive.class_test
Table hive.class_test stats: [numFiles=, totalSize=]
OK
Time taken: 0.299 seconds

3) 查询

hive> select stu_id_list[3] from class_test;
OK
4
NULL
10
Time taken: 0.048 seconds, Fetched: row(s)

3、Map使用

1) 建表

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.082 seconds

‘MAP KEYS TERMINATED BY’ :key value分隔符

2) 导入数据

[hadoop@master test]$ sudo vim test3.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/hadoop/test/test3.txt' into table employee;
Loading data to table default.employee
Table default.employee stats: [numFiles=, totalSize=]
OK
Time taken: 0.643 seconds

3) 查询

hive> select perf['person'] from employee;
OK
70
NULL
100
Time taken: 0.473 seconds, Fetched: row(s)

以上就是博主为大家介绍的这一板块的主要内容,这都是博主自己的学习过程,希望能给大家带来一定的指导作用,有用的还望大家点个支持,如果对你没用也望包涵,有错误烦请指出。如有期待可关注博主以第一时间获取更新哦,谢谢! 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Hive 基本语法操练(四):Hive 复合类型的更多相关文章

  1. Hive基本语法操练

    建表规则如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...

  2. C++ Primer Plus 第四章 复合类型 学习笔记

    第四章 复合类型 1. 数组概述 1.1 数组的定义 数组(array)是一种数据格式,能够存储多个同类型的值.每个值都存储在一个独立的数组元素中,计算机在内存中依次存储数组的各个元素. 数组声明的三 ...

  3. Hive 基本语法操练(六):Hive 的权限控制

    Hive 的权限控制 Hive从0.10可以通过元数据控制权限.但是Hive的权限控制并不是完全安全的.基本的授权方案的目的是防止用户不小心做了不合适的事情. 为了使用Hive的授权机制,有两个参数必 ...

  4. Hive 基本语法操练(二):视图和索引操作

    1. 视图操作 ------- 1) 创建一个测试表. ``` hive> create table test(id int,name string); OK Time taken: 0.385 ...

  5. Hive 基本语法操练(一):表操作

    Hive 和 Mysql 的表操作语句类似,如果熟悉 Mysql,学习Hive 的表操作就非常容易了,下面对 Hive 的表操作进行深入讲解. **(1)先来创建一个表名为student的内部表** ...

  6. C++PrimerPlus第6版 第四章——复合类型

    1,复合类型主要包含:数组.结构.联合.枚举.类.指针.引用等. 2,数组.长度必须确定.即编译阶段,数组的长度就得确定好.所以只能使用常量(#define.const)声明数组长度.如果使用变量声明 ...

  7. Hive 基本语法操练(三):分区操作和桶操作

    (一)分区操作 Hive 的分区通过在创建表时启动 PARTITION BY 实现,用来分区的维度并不是实际数据的某一列,具体分区的标志是由插入内容时给定的.当要查询某一分区的内容时可以采用 WHER ...

  8. Hive 基本语法操练(五):Hive 的 JOIN 用法

    Hive 的 JOIN 用法 hive只支持等连接,外连接,左半连接.hive不支持非相等的join条件(通过其他方式实现,如left outer join),因为它很难在map/reduce中实现这 ...

  9. Hadoop Hive sql语法详解

    Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...

随机推荐

  1. windows服务和进程的区别和联系

    Windows Service 是主要用于服务器环境而长期运行的应用程序, 这类程序不需要有用户界面或者任何模拟输出. 任何的用户消息通常都是记录在Windows 事件日志里.Windows Serv ...

  2. SpringMvc之参数绑定注解详解之一

    引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加 任何注解),查看了提交方式为application/ ...

  3. 获取剪切板上DataFormats.Dib格式的文件

    if (formats.Contains(System.Windows.Forms.DataFormats.Dib)) { using (var img = System.Windows.Forms. ...

  4. 如何设置 Windows 默认命令行窗口大小和缓冲区大小

    关键字: 命令行不能全屏 命令行最大化只有一半屏幕 命令行 字体 背景 颜色 解决方案:http://unmi.cc/save-windows-command-size/ 简要说明: win+r,输入 ...

  5. HDU 5980 Find Small A (水题)

    题意:众所周知,字符 'a' 的ASCII码为97.现在,找出给定数组中出现了多少次 'a' .注意,此处的数字为计算机中的32位整数.这表示, 1个数字由四个字符组成(一个字符由8位二进制数组成). ...

  6. hdu1072

    #include <iostream> #include <cstdio> #include <cstring> #include <queue> us ...

  7. jquery事件之事件处理函数

    一.事件处理 方法名 说明 语法 (events 事件类型,data数据,handler 事件处理函数,selector 选择器) Bind( 为每一个匹配元素的特定事件(像click)绑定一个事件处 ...

  8. laravel 导出插件

    转发:https://blog.csdn.net/gu_wen_jie/article/details/79296470 版本:laravel5 php 5.6 安装步骤: 一.安装插件 ①.首先在L ...

  9. Maven整合Eclipse进行Java项目开发

    一.Maven的配置 ①要求当前系统环境下配置了JAVA_HOME 在CMD命令行中输入:echo %JAVA_HOME% 如果能出来JDK的安装目录,说明我们配置了JAVA环境 ②将Maven的ZI ...

  10. 需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数 及 多属性节点查询

    第一个问题, 1. 首先需要引入命名空间, 2. 其次,在用xpath查找结点时,在selectNodes等方法中再次带入命名空间 如 XmlDocument doc = new XmlDocumen ...