1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Hive数据据类型 DDL DML

Hive数据据类型 DDL DML

时间:2023-11-06 17:39:49

相关推荐

Hive数据据类型 DDL DML

Hive的基本数据类型 DDL DML:

基本数据类型

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

集合数据类型

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

类型转化

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。

DDL数据定义

创建数据库

查询数据库

查看数据库详情

切换当前数据库

修改数据库

用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。修改当前正在使用的数据库,要先退出使用

删除数据库

创建表

管理表

默认创建的表都是管理表(内部表)。这种表,Hive会(或多或少地)控制着数据的生命周期。Hive默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。当我们删除一个管理表时,Hive也会删除这个表中数据。管理表不适合和其他工具共享数据。

创建普通表

根据查询结果创建表(查询的结果会添加到新创建的表中)会进行mapreduce作业

根据已经存在的表结构创建表

查询表的详细类型

外部表

外部表Hive并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,表的元数据信息会被删除掉。

应用场景

每天将收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过SELECT+INSERT进入内部表。

案例实操

数据准备

创建表

互相转换

注意:只能用单引号,严格区分大小写,如果不是完全符合,那么只会添加kv 而不生效

注意:注意:(‘EXTERNAL’=’TRUE’)和(‘EXTERNAL’=’FALSE’)为固定写法,区分大小写!

分区表

分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。

创建分区表

查询分区表

增加分区

删除分区

查看分区

分区表注意事项

二级分区表

数据关联

1.上传数据后修复

2.上传数据后修复

3.上传数据后load数据到分区

修改表

增加/修改/替换列信息

注:ADD是代表新增一字段,字段位置在所有列后面(partition列前),REPLACE则是表示替换表中所有字段。

实际案例

删除表

DML数据操作

向表中装载数据(Load)

通过查询语句向表中插入数据(Insert)

查询语句中创建表并加载数据(As Select)

Insert导出

命令导出

Sqoop导出

Sqoop参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。