Hive(三)—— Hive Shell

Hive Shell


Hive帮助文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual

Hive的Shell基本常用命令主要包含退出客户端、添加文件、修改/查看环境变量、执行linux命令、执行dfs命令等。除了基本命令,其他的命令主要是DDL和DML等操作数据表的命令。

注意:hdfs、yarn、metastore 服务启动。

[hadoop@master conf]$ start-all.sh

[hadoop@master ~]$ hive --service metastore &

如果出现如下问题:参考 https://blog.csdn.net/fyrcarry/article/details/84982289 


 

 

Hive 起源

Hive是为了在Hadoop集群之上提供了一个HQL(类SQL)操作的客户端,方便开发人员直接使用HQL进行数据分析任务,不需要使用java来编写MapReduce任务。

Hive是构建在Hadoop之上的数据仓库,也是一种操作Hadoop数据的“客户端”。

Hive可以在HDFS上构建数据仓库来存储结构化数据,Hive提供了类似于SQL的查询语言HiveQL,可以执行查询、交换数据等操作。

通过Hive执行引擎的转换,可以将HQL语句转换为MapReduce任务来执行。还提供了一系列的工具进行数据的加载转化,用来存储、查询和分析存储在HDFS中的大规模数据集。

 

HiveQL

简称HQL,是一种类似sql的查询语言,绝大多数语法和sql类似。

HQL支持基本类型和复杂类型两大数据类型。

数据类型描述
基本类型

TINYINT(1byte)、SMALLINT(2byte)、INT(4byte)、BIGINT(8byte)、

FLOAT(4byte)、DOUBLE(8byte)、BOOLEAN(-)、STRING(2G)

复杂类型

ARRAY(一组有序数组,类型必须一致)、

MAP(无序键值对,键值内部字段类型必须相同,而且要求key的类型为基本数据类型)、

STRUCT(一组字段,类型随意)

show主要作用:查看database、table、function等组件的名称信息,和Mysql的show命令类型。
describe主要作用:获取database、table、partition的具体描述信息,包括存储位置、字段类型等信息。
explain主要作用:获取hql语句的执行计划,通过分析执行计划来优化hql语句。

 

基本命令

清屏:

hive> !clear ;

DFS命令:

hive> dfs -ls /;

hive> dfs -cat /hive/myhive.db/student/student.txt;

 

Database

主要作用:提供数据分割的作用,方便数据管理。

# 显示的展示当前使用的数据库 
hive> set hive.cli.print.current.db=true; 

# 显示列头
hive> set hive.cli.print.header=true; 

# 创建
hive> create database IF NOT EXISTS test1 COMMENT "It's new database" WITH DBPROPERTIES ('name0'='value0');

hive> create schema IF NOT EXISTS test2 COMMENT "It's new schema" WITH DBPROPERTIES ('n0'='v0','n1'='v1');

# 描述
hive> describe database test1;

hive> describe database extended test1;

hive> describe schema test2;

hive> describe schema extended test2;

# 删除
hive> drop database test1;
# 如果database中非空,存在table,要么先删除table,要么使用级联命令cascade。
hive> drop database if exists test1 cascade;

 

Table

类型

内部表(托管表)

内部表是由Hive进行管理的,再删除内部表的时候,数据也会删除。

外部表

外部表的数据不是由Hive进行管理的,即当删除外部表的时候,外部表的数据不会从hdfs中删除。

一般情况下,在创建外部表的时候会将表的数据的存储路径定义在hive的数据仓库路径之外。

结构

普通表 
分桶表对于每一个表或者是分区,Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive是针对某一列进行分桶。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶中。分桶的好处是可以获得更高的查询处理效率。使取样更高效。
分区表

Hive使用select语句进行查询的时候一般会扫描整个表内容,会消耗很多时间做没必要的工作。

Hive可以在创建表的时候指定分区空间,这样在做查询的时候就可以很好的提高查询的效率。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值