Hive的数据类型

2023-11-17

Hive支持的数据类型如下:

原生类型:

  • TINYINT
  • SMALLINT
  • INT
  • BIGINT
  • BOOLEAN
  • FLOAT
  • DOUBLE
  • STRING
  • BINARY (Hive 0.8.0以上才可用)
  • TIMESTAMP (Hive 0.8.0以上才可用)

复合类型:

  • arrays: ARRAY<data_type>
  • maps: MAP<primitive_type, data_type>
  • structs: STRUCT<col_name : data_type [COMMENT col_comment], ...>
  • union: UNIONTYPE<data_type, data_type, ...>

我没有从数据类型本身来讲Hive支持的数据类型,这里只是举几个有关复合类型的例子。有一点面向对象编程知识的,很容易理解这几种复合数据类型,ARRAY类似于java数组,Map类似于java集合,struct类似于json。下面的例子转发自:http://blog.csdn.net/wf1982/article/details/7474601

在Hive 中如何使用符合数据结构  maps,array,structs

1. Array的使用

 创建数据库表,以array作为数据类型

 create table  person(name string,work_locations array<string>)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

COLLECTION ITEMS TERMINATED BY ',';

 

数据

biansutao beijing,shanghai,tianjin,hangzhou

linan changchu,chengdu,wuhan

 

数据入库

LOAD DATA LOCAL INPATH '/home/hadoop/person.txt' OVERWRITE INTO TABLE person;

 

查询

hive> select * from person;

输出:

biansutao       ["beijing","shanghai","tianjin","hangzhou"]

linan   ["changchu","chengdu","wuhan"]

Time taken: 0.355 seconds

 

hive> select name from person;

输出:

linan

biansutao

Time taken: 12.397 seconds

 

hive> select work_locations[0] from person;

输出:

changchu

beijing

Time taken: 13.214 seconds

 

hive> select work_locations from person;   

 输出:

["changchu","chengdu","wuhan"]

["beijing","shanghai","tianjin","hangzhou"]

Time taken: 13.755 seconds

 

hive> select work_locations[3] from person;

 输出:

NULL

hangzhou

Time taken: 12.722 seconds

 

hive> select work_locations[4] from person;

输出:

NULL

NULL

Time taken: 15.958 seconds

 

2. Map 的使用

 创建数据库表

 create table score(name string, score map<string,int>)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

COLLECTION ITEMS TERMINATED BY ','

MAP KEYS TERMINATED BY ':';

 

要入库的数据:

biansutao '数学':80,'语文':89,'英语':95

jobs '语文':60,'数学':80,'英语':99

 

入库数据

LOAD DATA LOCAL INPATH '/home/hadoop/score.txt' OVERWRITE INTO TABLE score;

  

查询

hive> select * from score;

输出: 

biansutao       {"数学":80,"语文":89,"英语":95}

jobs    {"语文":60,"数学":80,"英语":99}

Time taken: 0.665 seconds

 

hive> select name from score;

输出: 

jobs

biansutao

Time taken: 19.778 seconds

 

hive> select t.score from score t;

输出: 

{"语文":60,"数学":80,"英语":99}

{"数学":80,"语文":89,"英语":95}

Time taken: 19.353 seconds

 

hive> select t.score['语文'] from score t;

 输出:

60

89

Time taken: 13.054 seconds

 

hive> select t.score['英语'] from score t;

 输出:

99

95

Time taken: 13.769 seconds

 

3 Struct 的使用

 创建数据表

 

CREATE TABLE test(id int,course struct<course:string,score:int>)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

COLLECTION ITEMS TERMINATED BY ',';

 

数据

1 english,80

2 math,89

3 chinese,95

 

入库

LOAD DATA LOCAL INPATH '/home/hadoop/test.txt' OVERWRITE INTO TABLE test;

 

 

查询

 

 

hive> select * from test;

OK

1       {"course":"english","score":80}

2       {"course":"math","score":89}

3       {"course":"chinese","score":95}

Time taken: 0.275 seconds

 

hive> select course from test;

输出: 

{"course":"english","score":80}

{"course":"math","score":89}

{"course":"chinese","score":95}

Time taken: 44.968 seconds

 

select t.course.course from test t; 

输出: 

english

math

chinese

Time taken: 15.827 seconds

 

hive> select t.course.score from test t;

输出: 

80

89

95

Time taken: 13.235 seconds

 

4. 数据组合 (不支持组合的复杂数据类型)

 

LOAD DATA LOCAL INPATH '/home/hadoop/test.txt' OVERWRITE INTO TABLE test;

create table test1(id int,a MAP<STRING,ARRAY<STRING>>)

row format delimited fields terminated by '\t' 

collection items terminated by ','

MAP KEYS TERMINATED BY ':';

 

1 english:80,90,70

2 math:89,78,86

3 chinese:99,100,82

 

LOAD DATA LOCAL INPATH '/home/hadoop/test1.txt' OVERWRITE INTO TABLE test1;

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive的数据类型 的相关文章

  • zeppelin hive 解释器抛出 ClassNotFoundException

    我已经部署了zeppelin 0 6并在Jdbc解释器下配置了hive 尝试执行 hive show databases Throws org apache hive jdbc HiveDriver 类 java lang ClassNot
  • Sparklyr/Hive:如何正确使用正则表达式(regexp_replace)?

    考虑下面的例子 dataframe test lt data frame mydate c 2011 03 01T00 00 04 226Z 2011 03 01T00 00 04 226Z A tibble 2 x 1 mydate
  • HDINSIGHT hive,MSCK REPAIR TABLE table_name 抛出错误

    我有一个名为employee 的外部分区表 带有分区 年 月 日 每天都会有一个新文件出现在特定日期的位置 调用今天的日期 它将是2016 10 13 TABLE SCHEMA create External table employee
  • 将 Spark 设置为 Hive 的默认执行引擎

    Hadoop 2 7 3 Spark 2 1 0 和 Hive 2 1 1 我正在尝试将 Spark 设置为配置单元的默认执行引擎 我将 SPARK HOME jars 中的所有 jar 上传到 hdfs 文件夹 并将 scala libr
  • Hive 将字符串转换为字符数组

    例如 如何将字符串转换为字符数组 abcd gt a b c d 我知道分割方法 SELECT split abcd a b c d 最后一个空格有错误吗 或任何其他想法 这实际上不是一个错误 蜂巢分割功能 https github com
  • Hive 和 PIG/Grunt shell 挂在 cygwin 上

    我在 Windows 7 机器 32 位 上以本地模式运行 Hadoop 我已将 HIVE PIG Hadoop Java6 全部安装在 C 驱动器上 我使用的 Cygwin 版本 2 819 我已将 C 安装在 cygwin 上 我可以从
  • 使用 PIG 从 Hive 表解析嵌套 XML 字符串

    我正在尝试使用 PIG 从 Hive 表中的字段而不是从 XML 文件中提取一些 XML 这是我读过的大多数示例的假设 XML 来自排列如下的表 ID XML string XML 字符串包含 n 行 始终包含最多 10 个属性中的至少一个
  • Hive“ANALYZE TABLE”如何从java执行

    我需要计算配置单元表中的行数 为此 我正在使用查询 ANALYZE TABLE p 7 COMPUTE STATISTICS noscan 我想通过java获取结果 我正在尝试以下操作 代码并没有运气 我得到的错误是 Exception i
  • 如何跳过 Hive 外部表中的 CSV 标头?

    我正在使用 Cloudera 的 Hive 版本 并尝试通过 csv 文件创建外部表 其中包含第一列中的列名称 这是我用来执行此操作的代码 CREATE EXTERNAL TABLE Test RecordId int FirstName
  • Hive 左外连接长期运行

    Hortonworks HDP 2 3 0 Hive 0 14 Table T1 partition on col1 no bucket ORC 应用程序 1 2 亿行和 6GB 数据大小Table T2 partition on col2
  • Hive 函数替换列值中的逗号

    我有一个配置单元表 其中字符串列的值为 12 345 有没有什么方法可以在插入此配置单元表期间删除逗号的配置单元函数 您可以使用regexp replace string INITIAL STRING string PATTERN stri
  • 如何从 Hive 中的 json 字符串中提取选定的值

    我在 Hive 中运行一个简单的查询 生成以下输出 以及一些其他附加列 col1 col2 A variable1 123 variable2 456 variable3 789
  • Hive - hive 中的逆透视功能

    我有两个表如下 Table A userid code code name property id 0001 1 apple id Y1234 0031 4 mango id G4567 0008 3 grape id H1209 0001
  • 在 HIVE 中查找函数

    我想检查一个字段是否包含字符串 我想要一个如下所示的函数 FIND string to find field to search 我的数据如下所示 field to search no match in this string record
  • 如何在 ORC 分区 Hive 表的中间添加一列,并且仍然能够使用新结构查询旧分区文件

    目前 我在 Prod 中有一个分区 ORC 托管 错误地创建为内部优先 Hive 表 其中至少有 100 天的数据 按年 月 日 约 16GB 数据 分区 这个表大约有160列 现在我的要求是在这个表的中间添加一列 并且仍然能够查询旧数据
  • 使用 Hive 自定义输入格式

    Update 好吧 事实证明以下不起作用的原因是因为我使用的是较新版本的InputFormat API import org apache hadoop mapred这是旧的与import org apache hadoop mapredu
  • HIVE:GROUP BY 的行为与 MySQL 中不同

    我对 MySQL 有一些经验 最近我必须在 HIVE 上做一些工作 两者之间的查询基本结构非常相似 但是 HIVE 中的 GROUP BY 的工作方式似乎有点不同 因此我无法实现以前在 MySQL 中使用 GROUP BY 可以实现的目标
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • Hive中group by后是否可以连接字符串字段

    我正在评估 Hive 需要在 group by 之后进行一些字符串字段连接 我找到了一个名为 concat ws 的函数 但看起来我必须显式列出所有要连接的值 我想知道是否可以在 Hive 中使用 concat ws 做这样的事情 这是一个
  • Spark JDBC 仅返回带有列名的数据帧

    我正在尝试使用 Spark JDBC 连接到 HiveTable 代码如下 val df spark read format jdbc option driver org apache hive jdbc HiveDriver option

随机推荐

  • 应用层协议 --- DNS协议

    DNS Domain Name Service 域名服务 DNS协议基于UDP 使用端口号53 由数字组成的 IP 地址很难记忆 所以我们上网使用网站 IP 地址的别名 域名 实际使用中 域名与 IP 地址是对应的 这种对应关系保存在DNS
  • 【前端面经】JS-如何使用 JavaScript 来判断用户设备类型?

    在 Web 开发中 有时需要针对不同的设备类型进行不同的处理 例如 对于移动设备 我们可能需要采用不同的布局或者交互方式 以提供更好的用户体验 因此 如何判断用户设备类型成为了一个重要的问题 1 使用 navigator userAgent
  • python优雅地爬虫

    申明 仅用作学习用途 不提供任何的商业价值 背景 我需要获得新闻 然后tts 在每天上班的路上可以听一下 具体的方案后期我也会做一次分享 先看我喜欢的万能的老路 获得html内容 gt python的工具库解析 获得元素中的内容 完成 好家
  • 『Newsletter丨第一期』PieCloudDB 新增自动启停、预聚集、试用规则优化、费用中心等多项功能模块...

    第一部分 PieCloudDB 最新动态 PieCloudDB 完成多个产品兼容性认证 PieCloudDB 与多家基础架构软件厂商完成产品兼容性认证 类别包括操作系统 服务器 CPU 云平台 新增 8 家生态伙伴 包括龙蜥 麒麟 中科可控
  • c语言求fibonacci数列前20,求fibonacci数列的前20个数之和

    使用数组求Fibonacci数列的前20项 要求4项一行输出 斐波那契数列通项公式 斐波那契数列指的是这样一个数列 1 1 2 3 5 8 13 21 这个数列从第三项开始 每一项都等于前两项之和 includeintmain inta 2
  • 容斥原理——经典例题(组合数学)

    一 容斥原理 就是人们为了不重复计算重叠部分 想出的一种不重复计算的方法 先来认识一下这两个符号 与 如图 蓝色的圈就是c1c2 红色的圈围起来的就是c1c2 二 例题 组合数学 1 题目 1 1 题目描述 八是个很有趣的数字啊 八 发 八
  • Centos nginx配置文档

    1 安装nginx yum install nginx 2 Nginx常用命令 查看版本 nginx v 启动 nginx c etc nginx nginx conf 重新加载配置 nginx s reload 停止 nginx s st
  • Bat批处理使用ren批量重命名文件,比如批量去掉文件名称的前4位

    从手机下导入一批照片到电脑 照片开头都是以IMG 开头 甚是烦 使用ren可以批量去掉IMG 开头的几个字符 参考如下 去掉文件名称的最前面4位 去掉文件名称的最后5位 去掉的5位包括 jpg这四个后缀 echo off Deep Lee
  • OCR文字检测主要算法

    转载 https www mayi888 com archives 60604 文字检测是文字识别过程中的一个非常重要的环节 文字检测的主要目标是将图片中的文字区域位置检测出来 以便于进行后面的文字识别 只有找到了文本所在区域 才能对其内容
  • 西门子 PLC S7单边通信

    PLC通信 1 组态 编程 1 打开博途软件 创建新项目 命名为 通信 2 添加新设备 命名为A 这里选择的是CPU1211C 版本V4 2 3 CPU属性设置 启用系统存储器字节和时钟存储器字节 4 以太网地址设置 IP地址设为 192
  • 一文说明白SMC继电器的三种模式:迟滞模式,窗口模式,报警模式

    阅读时间5分钟 有不少同学表示 不理解迟滞模式 窗口模式 报警模式 这里花点儿时间说明一下 这三种模式按照难易程度 1 报警模式 这种方式顾名思义 到压力报警 回到正常范围 报警消除 简单易懂 不过 如果我们需要的压力是0 7MPa 那么我
  • Java坑人面试题系列: 变量声明(中级难度)

    作用域规则与变量覆盖面试题 Java Magazine上面有一个专门坑人的面试题系列 https blogs oracle com javamagazine quiz 2 这些问题的设计宗旨 主要是测试面试者对Java语言的了解程度 而不是
  • 华为OD -单词接龙(Python)

    单词接龙 题目描述 单词接龙的规则是 可用于接龙的单词 首字母必须要与前一个单词的尾字母相同 当存在多个首字母相同的单词时 取长度最长的单词 如果长度也相等 则取字典序最小的单词 已经参与接龙的单词不能重复使用 现给定一组全部由小写字母组成
  • vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)

    目录 1 需求 2 想要的效果就是由图一变成图二 编辑 3 组件集成了以下功能 4 参数配置 示例代码 参数说明 5 组件 6 页面使用 1 需求 一般后台管理系统 通常页面都有增删改查 而查不外乎就是渲染新增 修改的数据 由输入框变成输入
  • Oracle 数据库查看锁表的语句和解锁的方法

    一 查看锁表语句 SELECT sess sid sess serial lo oracle username 登陆账号名称 lo os user name 登录电脑名称 ao object name 被锁表名 lo locked mode
  • 【Vulnhub】之symfonos1

    一 部署方法 在官网上下载靶机ova环境 https download vulnhub com symfonos symfonos1 7z 使用VMware搭建靶机环境 攻击机使用VMware上搭建的kali 靶机和攻击机之间使用NAT模式
  • oracle impdp无法打开日志文件,oracle expdp导入时 提示“ORA-39002: 操作无效 ORA-39070: 无法打开日志文件 ”...

    oracle impdp导入时 提示 OpenCurlyDoubleQuote ORA 39002 colon 操作无效 ORA 39070 colon 无法打开日志文件 第一步 首先使用DBA权限的用户创建directory 我使用sys
  • ‘git‘不是内部或外部命令,也不是可运行的程序或批处理文件。

    一 出现问题 git 不是内部或外部命令 也不是可运行的程序或批处理文件 出现这个问题主要是git的环境变量没有设置 二 解决问题 首先右键我的电脑点击属性 在点击高级系统设置 点击环境变量 在下面这栏点击path设置环境变量 添加这三个环
  • 【人工智能】感知器算法的设计实现(QDU)

    人工智能 Astar算法求解8数码问题 QDU 人工智能 利用 搜索的博弈树算法编写一字棋游戏 QDU 人工智能 Fisher 线性分类器的设计与实现 QDU 人工智能 感知器算法的设计实现 QDU 人工智能 SVM 分类器的设计与应用 Q
  • Hive的数据类型

    Hive支持的数据类型如下 原生类型 TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY Hive 0 8 0以上才可用 TIMESTAMP Hive 0 8 0以上