Hive基础知识

Hive

Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,提供简单的SQL查询功能,将SQL语句转化为MapReduce任务进行运行

HIve不支持数据的修改或删除

Hive简介

什么是Hive

HIve是一个翻译器:SQL→HIve引擎→MapReduce程序

HIve是构建在HDFS上的一个数据仓库

HIve支持SQL

为什么要使用Hive

降低学习MapReduce的复杂度,使DBA、运维人员可以通过SQL来实现

HiveQL

HIve支持的数据类型

基本数据类型:整型、浮点型、布尔类型、字符串

复杂数据类型:Array数组、Map集合、Struct结构体

时间类型:Date、Timestamp

数据模型

内部表

与数据库中的Table在概念上是类型的

每一个Table在HIve中都有一个相应的目录存储系统

所有的Table数据都保存在这个目录中

删除表时,数据都会被删除

外部表

指向已经在HDFS中存在的数据

它和内部表在数据的组织上是相同的,而实际数据的存储则有较大的差异

外部表只与外部数据建立一个连接,删除外部表时,仅删除该连接

桶表

对数据进行哈希取值,然后放到不同的文件存储

需要设置环境变量:set hive.enforce.bucketing = true;

临时表

表只对当前session有效,session退出后,表自动删除

视图

视图是一种虚表,是一个逻辑概念;可以跨越多张表

视图建立在已有表的基础上,视图赖以建立的这些表称为基表

视图可以简化复杂的查询,但不能提高查询效率

HQL语句

建表语句

原生数据类型

create table t_user( id int, name string, age int, score double ) comment "用户信息" row format delimited fields terminated by ",";

复杂数据类型的使用

create table t_user2( id int, name string, age int, scores map<string,int> ) row format delimited fields terminated by "," --指定字段之间分隔符 collection items terminated by "-" --指定集合元素之间分隔符 map keys terminated by ":"; --指定map元素K,V之间分隔符

创建外部表

使用external关键字,默认为内部表

create external table t_user( --使用external关键字后,创建的表为外部表 id int, name string, age int, score double ) comment "用户信息" row format delimited fields terminated by ",";

分区表

使用partitioned by (属性名 类型)

分区使用的属性名不能和表中属性名重复

create external table t_user( id int, name string, age int, score double ) comment "用户信息" partitioned by (name_temp string) row format delimited fields terminated by ",";

分区表导入数据

load data local inpath "user1.txt" into table t_user partition(name_temp="user_1"); load data local inpath "user2.txt" into table t_user partition(name_temp="user_2"); load data local inpath "user3.txt" into table t_user partition(name_temp="user_3");

桶表

使用clustered by(字段)into 分为几桶 buckets

使用sorted by (字段 升序/降序) 排序

create table t_user( id int, name string, age int, score double ) clustered by (age) --根据age字段分桶 sorted by (age desc) into 5 buckets; --根据age字段排序,分为5桶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值