`
xiaobian
  • 浏览: 587911 次
  • 来自: 北京
社区版块
存档分类
最新评论

HIVE中map,array和structs使用

阅读更多

1:怎样导入文本文件(格式是怎样的?),2:怎样查询数据,已经能否在join中使用?在子查询中使用?等等

知道怎么在hive中导入数组不?
例如:我想把 数组[1,2,3] 和 数组 ["a","b","c"]
导入到table1
create table table2 ( a array<int> , b array<string>);

那么 我如何 导入呢?使得
select * from table1;
j
结果为:
[1,2,3] ["a","b","c"]

同样 在 hive 中 对于 map
怎样 查询呢?
例如 
create table table2 ( a MAP<STRING,ARRAY<STRING>>);
select * from table2
结果为:
{"d01":["d011","d012"],"d02":["d021","d022"]}
{"d01":["d011","d012"],"d02":null}
{"d01":[null,"d012"],"d02":["d021","d022"]}
那么 我想获得 key d01value 
该怎么操作呢

关于数组的操作说明:
drop table table2;

create table table2 (a array<string>, b array<string>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ',';


load data local inpath "../hive/examples/files/arraytest.txt"  overwrite into table table2;

arraytest.txt
中的数据形式为:(不同数组间用\t分割,同一数组内不同元素用逗号分割)
b00,b01        b00,b01
b00,b01        b00,b01
b00,b01        b00,b01
b00,b01        b00,b01


hive> select * from table2;

OK
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
Time taken: 0.056 seconds

hive> select a from table2;
OK
["b00","b01"]
["b00","b01"]
["b00","b01"]
["b00","b01"]
Time taken: 15.903 seconds

hive> select a[0] from table2;
OK
b00
b00
b00
b00
Time taken: 12.913 seconds

hive> select * from table2 where a[0] = b[0];
OK
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
Time taken: 11.803 seconds

 

关于map的操作说明:
drop table table2;

hive> CREATE TABLE table2 (foo STRING , bar MAP<STRING, STRING>)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '\t'
    > COLLECTION ITEMS TERMINATED BY ','
    > MAP KEYS TERMINATED BY ':'
    > STORED AS TEXTFILE;


hive> load data local inpath "../hive/examples/files/maptest.txt"  overwrite into table table2;
maptest.txt
中的文件格式为:(不同列之间用一个tab分割,mapkeyvalue用冒号分割,不同K/V间用逗号分割)
a00        b0:b01,b1:b11
a01        b1:b11,b2:b12
a02        b2:b12,b3:b13
a03        b3:b13,b4:b14

hive> select bar from table2;
OK
{"b0":"b01","b1":"b11"}
{"b1":"b11","b2":"b12"}
{"b2":"b12","b3":"b13"}
{"b3":"b13","b4":"b14"}
Time taken: 19.237 seconds
怎么根据 key来查询value呢?
hive> select bar['b1'] from table2;
OK
b11
b11
NULL
NULL
Time taken: 11.65 seconds

查看map中的键值对个数:
hive> select 
size(bar) from table2;
OK
2
2
2
2
Time taken: 12.137 seconds

分享到:
评论

相关推荐

    String、Array与Date、String的转化

    本工具类用于String、Array和String、Date之间的转化

    Hive使用手册Hive使用手册

    - **复杂数据类型** 包括:ARRAY、MAP、STRUCT和UNIONTYPE,它们可以存储结构化或半结构化的数据。 - **Hive类型转换** 在创建表或处理数据时,可能需要进行类型转换,这可以通过HQL的CAST函数实现。 3. **Hive...

    hive复合类型使用

    列举了hive中的复合类型的使用,map array struct

    Hive metastore 使用达梦数据库存储元数据

    然而,为了适应更复杂的业务需求和更高的性能,我们可以选择将Hive元数据存储在达梦数据库中。本文将详细介绍如何配置Hive metastore以使用达梦数据库。 首先,要在达梦数据库中创建metastore所需的用户和表空间。...

    hive级联求和

    本主题将深入探讨“hive级联求和”的概念及其实际应用,这在数据分析和报表制作中尤其常见。 首先,我们需要理解什么是级联求和。在统计学和数据分析中,级联求和是指在一组数据中逐级累加特定字段的值,直到得到一...

    hive远程连接工具和jar.zip

    压缩包中的“hive远程连接工具和jar”很可能包含了所有这些必要的JAR文件,这使得用户无需手动搜索和添加,可以直接使用SQuirreL SQ Client连接到远程Hive环境。这些JAR包可能包括: 1. `hive-jdbc.jar` - 包含Hive...

    部分普通sql查询在hive中的实现方式

    - **背景**:Hive不支持直接使用`HAVING`关键字,但可以通过嵌套子查询并在外层查询中使用`WHERE`条件来实现类似的功能。 - **示例**:如果想实现如下标准SQL的`HAVING`查询: ```sql SELECT gender, COUNT(*) as...

    大数据之Hive官方文档简要翻译(中文文档)

    Hive是一款基于Hadoop的数据仓库工具,它允许用户使用SQL-like的语言(HQL)来查询、管理和处理存储在Hadoop文件系统(HDFS)上的大规模数据集。在Hive的核心组件中,元存储(Metastore)扮演着至关重要的角色,它是...

    HIVE安装及详解

    HIVE是一种基于Hadoop的数据仓库工具,主要用于处理和分析大规模数据。下面是关于HIVE的安装及详解。 HIVE基本概念 HIVE是什么?HIVE是一种数据仓库工具,主要用于处理和分析大规模数据。它将结构化数据文件转换为...

    Hive复杂数据类型使用介绍

    Hive作为一个大数据分析工具,提供了多种数据类型,其中包括了复杂数据类型如Array、Map和Struct。这些复杂数据类型可以满足各种复杂的数据存储需求。 一、Array类型 Array类型是Hive中的一种复杂数据类型,用于...

    hive性能优化

    Hive中,Map任务的数量由`mapred.min.split.size`和`mapred.max.split.size`这两个参数决定。默认情况下,`mapred.min.split.size`为1B,`mapred.max.split.size`为256MB,这意味着一个Map任务处理的数据量上限为256...

    Hive教程.pdf

    - **复合类型**: ARRAY、MAP、STRUCT、UNION #### 三、Hive DDL数据定义语法 - **创建数据库**: - `CREATE DATABASE database_name;` - **查看数据库定义**: - `DESCRIBE DATABASE EXTENDED database_name;` - *...

    Hive优化方法整理

    Hive 优化方法整理是 Hive 数据处理过程中的重要步骤,涉及到 Hive 的类 SQL 语句本身进行调优、参数调优、Hadoop 的 HDFS 参数调优和 Map/Reduce 调优等多个方面。 Hive 类 SQL 语句优化 1. 尽量尽早地过滤数据...

    hive源码分析

    Hive使用了丰富的对象模型来表示其内部状态和数据流,这些对象包括但不限于: - **Table**:表示Hive中的表。 - **Partition**:表示表的分区。 - **Bucket**:表示表的桶。 - **Column**:表示表的列。 - **SerDe**...

    hive 和 presto sql的对比

    Hive允许在`NOT IN`子句中直接使用空值,而Presto需要显式处理空值,如示例所示,需要使用`COALESCE`函数来避免空值。 2. **日期转换**: Presto强调强类型,不支持隐式类型转换。在处理日期时,必须显式转换。...

    centos7中hive的安装和使用

    CentOS 7 中 Hive 的安装和使用 Hive 是一个基于 Hadoop 的数据仓库工具,主要用于存储、查询和分析大规模数据。下面将详细介绍 CentOS 7 中 Hive 的安装和使用。 1. 安装 MySQL 在安装 Hive 之前,需要先安装 ...

    hive参数配置说明大全

    在Hive中,参数配置起着非常重要的作用,它可以影响Hive的性能、安全性和执行效率。本文将对Hive的参数配置进行详细的解释,以便更好地使用Hive。 1. hive.exec.mode.local.auto 该参数决定Hive是否应该自动地根据...

    HIVE文件读写

    在IT行业中,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive查询语言)对大规模数据集进行分析和处理。Hive文件读写是Hive核心功能之一,使得数据分析师和数据科学家能够方便地对存储在HDFS...

    Hive原理与实现

    - **使用Map Join**:当连接表较小且适合放入内存时,使用Map Join可以避免额外的Reduce任务。 - **利用分区裁剪**:通过WHERE子句指定特定分区,减少需要扫描的数据量,从而减少map任务的数量。 - **减少GROUP BY...

Global site tag (gtag.js) - Google Analytics