千家信息网

Hive中有哪些数据类型

发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,这篇文章给大家分享的是有关Hive中有哪些数据类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、Hive 数据类型1.1、基本数据类型对于Hive的String类型相当
千家信息网最后更新 2025年01月28日Hive中有哪些数据类型

这篇文章给大家分享的是有关Hive中有哪些数据类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、Hive 数据类型

1.1、基本数据类型

对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。

1.2 、集合数据类型

Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。

案例实操:

//1、假设某表有如下一行,我们用JSON格式来表示其数据结构。在Hive下访问的格式为{    "name": "kinglong",    "friends": ["ZYL" , "WJM"],       //列表Array,     "children": {                     //键值Map,        "xiao chen": 2,        "xiaoxiao chen": 1    }    "address": {                     //结构Struct,        "street": "wan guo cheng",        "city": "chang sha",        "email": "kinglong2333@163.com"    }}
//2、基于上述数据结构,我们在Hive里创建对应的表,并导入数据。创建本地测试文件test.txtkinglong,ZYL_WJM,xiao chen:2_xiaoxiao chen:1,wan guo cheng_chang sha_kinglong2333@163.comwujiaoxin,LWH_WQ,xiao wu:3_xiaoxiao wu:2,kai fu_changsha_233333@163.com注意:MAP,STRUCT和ARRAY里的元素间关系都可以用同一个字符表示,这里用"_"。
//3、Hive上创建测试表testcreate table test(name string,friends array,children map,address struct)row format delimited fields terminated by ','     -- 指定各字段之间用什么分隔开collection items terminated by '_'          --集合数据类型每条数据之间用什么分隔开map keys terminated by ':'                  -- map数据类型k,v之间用什么分隔开lines terminated by '\n';                        -- 每条数据之间用什么分隔开(默认就是换行符)
//4、导入文本数据到测试表hive (default)> load data local inpath '/opt/module/hive/datas/test.txt' into table test;//5、访问三种集合列里的数据,以下分别是ARRAY,MAP,STRUCT的访问方式hive (default)> select friends[1],children['xiao chen'],address.city from testwhere name="kinglong";OK_c0     _c1     cityWJM    2      chang shaTime taken: 0.076 seconds, Fetched: 1 row(s)

1.3、类型转换

    Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。
1)隐式类型转换规则如下(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。(2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。(3)TINYINT、SMALLINT、INT都可以转换为FLOAT。(4)BOOLEAN类型不可以转换为任何其它的类型。2)可以使用CAST操作显示进行数据类型转换例如CAST('1' AS INT)将把字符串'1' 转换成整数1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

2、DDL数据定义

2.1、库的操作

一.创建库:        CREATE DATABASE [IF NOT EXISTS] 库名                #IF NOT EXISTS :如果库不存在则创建库。如果库存在则不创建。                #注意:如果不加该内容。库存在时就会报错        [COMMENT 库的描述信息]                #comment用来添加库的描述信息        [LOCATION hdfs_path]                #localtion : 指定库在hdfs上的路径(如果不指定则放在默认的路径下-配置文件中配置的路径)        [WITH DBPROPERTIES (name=value, ...)];                #WITH DBPROPERTIES : 给库添加属性。                #注意:name和value都是string                二.案例:        create database if not exists db2        comment 'this is db2'        location '/db2.db'        with dbproperties('version'='1.0');三.对库的操作        1.查看所有的库:                show databases;                        2.选库                use 库名;                        3.查看库的信息(extended:可以查看库的属性内容)                desc database [extended] 库名;                        4.修改库(只能修改属性)                alter database 库名 set dbproperties('name'='value');                        5.删库(cascade :如果库为非空必须使用该字段才能删库)                #if exists :如果库存在则删除。如果不加该字段库不存在则会报错                drop database [if exists] 库名 [cascade]

2.2、表的操作

一 创建表        CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名                 #EXTERNAL :加上该字段该表为外部表。不加则为内部表(管理表)                #IF NOT EXISTS :如果表不存在则创建表存在则不创建。如果不加该字段表存在则报错        [(字段名 字段类型 [COMMENT 字段的描述信息], ...)]         [COMMENT 表的描述信息]         [PARTITIONED BY (字段名 字段类型 [COMMENT 字段描述信息], ...)]                 #PARTITIONED BY :指定分区字段(分区表)        [CLUSTERED BY (字段名1, 字段名2, ...)                 #CLUSTERED BY :指定分桶字段(分桶表)        [SORTED BY (字段名 [ASC|DESC], ...)] INTO 分桶的数量 BUCKETS]                 #SORTED BY :在添加数据时按照指定字段进行排序(几乎不用)        [ROW FORMAT row_format]                 delimited fields terminated by ',' #指定各字段之间用什么分隔开                collection items terminated by '_'  #集合数据类型每条数据之间用什么分隔开                map keys terminated by ':' #map数据类型k,v之间用什么分隔开                lines terminated by '\n';#每条数据之间用什么分隔开(默认就是换行符)        [STORED AS 存储的类型]                 #STORED AS:指定存储文件(表中的数据)的类型。默认是TextFile        [LOCATION 表的路径]        [TBLPROPERTIES (name=value, ...)]                #给表添加属性。注意:name和value都是string        [AS sql查询语句]                #将查询的结果创建成一张表        [LIKE 表名]                #允许用户复制现有的表(like后面的表)结构,但是不复制数据                                二 创建表案例        create table if not exists person(        id int comment 'this is id',        name string comment 'this is name'        )        comment 'this is person'        row format delimited fields terminated by '\t'        location '/person'        tblproperties('version'='1.0');-----------------------------------------------------2.1导入数据        load data [local] inpath '/opt/module/hive/datas/student.txt' into table person;        #[local] :如果不加local地址为HDFS。如果加了Local地址为本地-----------------------------------------------------2.2 like        create table if not exists person2        like person;-----------------------------------------------------2.3 as        create table if not exists person3        as        select * from person where id < 1010;-----------------------------------------------------2.4创建外部表和管理表        create external table if not exists ext_tbl(        id int,        name string        )        row format delimited fields terminated by '\t';        create table if not exists man_tbl(        id int,        name string        )        row format delimited fields terminated by '\t';注意:外部表删除表时只会删除元数据。管理表删除表时会元数据和数据会被一同删除。-----------------------------------------------------2.5 外部表和管理表相互转换        alter table 表名 set tblproperties('EXTERNAL'='TRUE/FALSE');        注意:属性的内容一定要大写。三 操作表:        1.查看表信息(formatted :可以查看更详细的内容)                desc [formatted] 表名;                        2.删除表                drop table 表名;                3.修改表的名字                alter table 表名 rename to 新表名;                        4.更新列名                ALTER TABLE 表名 CHANGE [COLUMN]                 旧列名 新列名 列的类型 [COMMENT 列的描述信息] [FIRST|AFTER 列名]                        4.更新列的类型                ALTER TABLE 表名 CHANGE [COLUMN]                 列名 列名 新的列的类型 [COMMENT 列的描述信息] [FIRST|AFTER 列名]                注意:修改类型一定要符合隐式转换否则会报错。                        5.增加列         ALTER TABLE 表名 ADD COLUMNS (字段名 字段类型 [COMMENT 字段描述信息], ...)                  6.替换列         ALTER TABLE 表名 REPLACE COLUMNS (字段名 字段类型 [COMMENT 字段描述信息], ...)                   注意:①如果替换的列少于被替换的列,那么按照顺序进行替换。没有被替换的列被直接删除。                   ②替换列时一定要注意数据类型。(能隐式转换的可以替换否则报错)                        7、清空表(只能清空管理表--不是删表而是删除数据)                truncate table 表名;

感谢各位的阅读!关于"Hive中有哪些数据类型"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

类型 数据 字段 信息 之间 内容 字符 属性 管理 结构 路径 存储 整数 文件 案例 表达式 会报 测试 复杂 地址 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电力电子软件开发工程师 数据库资源泄露 birt ap服务器是什么 宁波海曙区h3c应用优化服务器 默认访问服务器端口 上海游戏软件开发哪的服务好 顺义区多功能网络技术哪家好 图书管理系统需不需要服务器 内网用什么服务器 湖北职工技能大赛网络安全 服务器数据库管理和数据备份 服务器已断开连接但没发送数据 软件开发者是否构成侵犯著作权 计算机网络技术属于什么系科 garena服务器经常连接失败 苹果电脑服务器无效 徐汇区品牌软件开发诚信合作 太原网警检查网络安全 公众号软件开发收费明细 网络安全宣传活动图片 企业网络安全怎么规避比较好 it网络技术员岗位职责 高新区服务器上门回收 连云港江苏服务器服务商云主机 对学生网络安全教育的措施 王瀚清网络安全 密云区推广软件开发介绍 数据库参照对象是什么 软件开发工具演变过程 服务器的理解
0