前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)

Hadoop数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)

作者头像
Albert陈凯
发布2018-04-08 11:22:45
1.1K0
发布2018-04-08 11:22:45
举报
文章被收录于专栏:Albert陈凯Albert陈凯

离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)

Hive服务介绍

Hive默认提供的cli(shell)服务,如果需要启动其他服务,那么需要service参数来启动其他服务, 比如thrift服务、metastore服务等。 可以通过命令hive --service help查看hive支持的命令。

image.png

Hive Shell命令介绍

Hive的shell命令是通过${HIVE_HOME}/bin/hive文件进行控制的,通过该文件我们可以进行hive当前会话的环境管理、也进行进行hive的表管理等操作。 hive命令需要使用';'进行结束标示。 通过hive -H查看帮助信息:另外从hive0.11版本开始支持--database <databasename>.

image.png

Hive Shell常用基本命令

Hive的Shell基本常用命令主要包含退出客户端、添加文件、修改/查看环境变量、执行linux命令、执行dfs命令等。 命令包括:quit、exit、set、add JAR[S] <filepath> <filepath>*、list JAR[S]、delete JAR[S] <filepath>*、! <linux-command>、dfs <dfs command>等。 除了Hive的基本命令外,其他的命令主要是DDL和DML等操作数据表的命令。

HiveQL介绍

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、describe、explain命令介绍

show命令

主要作用是查看database、table、function等组件的名称信息,也就是通过show命令我们可以知道我们的hive中有那些database;当前database中有那些table。等等。和mysql的show命令类型。

describe命令

主要作用是获取database、table、partition的具体描述信息,包括存储位置、字段类型等信息。

explain命令

主要作用是获取hql语句的执行计划,我们可以通过分析这些执行计划来优化hql语句。

Database介绍

hive提供database的定义,database的主要作用是提供数据分割的作用,方便数据管理。命令如下: 创建: create (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=value,name=value....)]。 显示描述信息:describe DATABASE|SCHEMA [extended] database_name。 删除:DROP DATABASE|SCHEMA [IF EXISTS] database_name [RESTRICT|CASCADE] 使用: use database_name

Hive表介绍

Hive中的表可以分为 内部表(托管表) 和外部表, 区别在于: 外部表的数据不是有hive进行管理的,也就是说当删除外部表的时候,外部表的数据不会从hdfs中删除。 而内部表是又hive进行管理的,在删除表的时候,数据也会删除。 一般情况下,我们在创建外部表的时候会将表数据的存储路径定义在hive的数据仓库路径之外。

Hive创建表主要有三种方式, 第一种直接使用create table命令, 第二种使用create table .... AS select ....(会产生数据)。 第三种使用create table tablename like exist_tablename.命令。

create table命令介绍

代码语言:javascript
复制
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 
[db_name.]table_name (col1_name col1_type [COMMENT col1_comment],....) -- 指定表的名称和表的具体列信息
[COMMENT table_comment]  --表的描述信息
[PARTITIONED BY (col_name col_type [COMMENT col_comment],...)]   -- 表的分区信息
[CLUSTERED BY (col_name, col_name,....) [SORTED BY (col_name [ASC|DESC],...])] INTO num_buckets BUCKETS] -- 表的分桶信息
[ROW FORMAT row_format] -- 表的数据分割信息,格式化信息
[STORED AS file_format] -- 表数据的存储序列化信息
[LOCATION hdfs_path];  -- 数据存储的文件夹地址信息
CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
[db_name.]table_name LIKE existing_table_or_view_name -- 指定要创建的表和已存在表/视图的名称
[LOCATION hdfs_path]; -- 数据文件存储的hdfs文件地址信息
CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
[db_name.]table_name   -- 指定要创建的表名
.... 指定partition&bucket等信息,指定数据分割符号。
[AS select_statement]; -- 导入的数据

案例1

分别使用默认命令创建内部表test_manager、外部表test_external以及指定location的内部表test_location,然后分别删除这两个表,查看变化情况:命令如下:

代码语言:javascript
复制
create external table test_external(id int);
create table test_location(id int) location '/test_location';
drop table test_manager;
drop table test_external;
drop table test_location;

删除表的时候,内部表不管是否指定location,均会删除文件夹,外部表一定不会删除

案例2

分别使用三种命令格式创建客户表customers,customers2,customers3,然后分别查看三张表(全部为内部表)的区别,命令如下:

```CREATE TABLE customers(id int,name string,phone string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'hdfs://hh:8020/customers'; CREATE TABLE customers2 like customers; CREATE TABLE customers3 AS SELECT * FROM customers;

代码语言:javascript
复制
###案例3

创建一个有复杂数据类型的hive表,并明确指定表数据的分隔符号,命令如下:

```create table complex_table_test(id int, name string, flag boolean, score array<int>, tech map<string,string>, other struct<phone:string,email:string>) row format delimited fields terminated by '\;' collection items terminated by ',' map keys terminated by ':' LOCATION 'hdfs://hh:8020/complex_table_test';

案例4

创建一个使用hbase的外部表,也就是说hive表数据为hbase的数据,创建命令格式如下:

```CREATE EXTERNAL TABLE hive_table_name(key string, col1 type comment, col2 type comment,.....) -- 指定hive表的列名和表名 ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ('hbase.columns.mapping'=':key,family1:col1,f1:col2,...fn:coln') -- 指定格式化信息 TBLPROPERTIES ('hbase.table.name'='hbase_tablename'); -- 指定hbase表名

代码语言:javascript
复制
**注意:必须指定hbase的rowkey。**


### Hive表结构操作命令

除了创建hive表的命令外,常用的hive表相关DDL命令有:`describe`(查看表结构信息)、`drop`(删除表)、`truncate`(重构表,也就是先删除再重新建立)、`alter`(修改表结构)等。
常用命令的格式如下所示:
`
```describe (extended|formatted) table_name;
drop table [if exists] table_name;
truncate table table_name;
alter table table_name rename to new_table_name;
alter table table_name add colums (new-cls type,....);
alter table table_name replace colums (new-cls type,....);

参考链接: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)
    • Hive服务介绍
      • Hive Shell命令介绍
        • Hive Shell常用基本命令
          • HiveQL介绍
            • show、describe、explain命令介绍
              • Database介绍
                • Hive表介绍
                  • create table命令介绍
                    • 案例1
                      • 案例2
                        • 案例4
                        相关产品与服务
                        文件存储
                        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档