【Hive】概述及常用命令

用于记录Hive的原理说明、常用命令、以及优化,以便日后查询。

1. Hive概述

a. Hive是一个数据仓库的软件,用来管理大量的数据集,对其进行数据统计分析

b. Hive并不是数据库,它和数据库的应用场景不同,数据库适用于OLTP[online transaction process 在线事务处理],而Hive适合于OLAP[online analysis process 在线分析处理]

2. 知识点说明

a. Hive可以用类SQL语言[HiveQL/HQL]进行操纵,但是并不是操作的真实的表
    Hive中的数据库和表都是HDFS上的文件夹,表中的数据实际上是put在HDFS上的文本文件

b. Hive将数据库、表、字段的描述信息存放在关系型数据库中,默认是Derby,可以存放MySQL

c. Hive用HQL对数据库进行操作时,将HQL语句中的信息和存放在MySQL中的描述信息进行比对,从而映射到HDFS上的文件上去,找到数据存放的文件,从而操作数据

d. MySQL中存放的是数据库和表的结构,而数据则是HDFS上的文本,只需要文本的格式符合表行和列的分割符要求,将该文本手动put到HDFS上之后,用HQL查询表
中数据的时候,也会将该文本中的数据查询出来,若是不符合分割要求,查询出来则会显示NULL

e. Hive不支持更新,删除,也不支持事务

f. set指令可以显示所有的环境变量信息

g. hive命令行下,可以通过"!+Linux指令"的方式执行Linux指令,例如:!clear

3. Hive数据类型

TINYINT[1 byte]                         ARRAY
SMALLINT[2 bytes]                       MAP
INT[4 bytes]                            STRUCT
BIGINT[8 bytes]                         NAMED STRUCT
FLOAT[4 bytes]                          UNION
DOUBLE[8 bytes]
DECIMAL[38 digits]
BINARY
BOOLEAN
STRING
CHAR
VARCHAR
DATE
TIMESTAMP

3. 常用命令

在Hive中可以使用hdfs命令,即dfs命令

创建数据库,MySQL记录数据库的描述信息,对应HDFS上的数据库文件夹

create database <basename>;
e.g.
    CREATE DATABASE IF NOT EXISTS myhive
    COMMENT ‘hive database demo‘
    LOCATION ‘/hdfs/directory‘                  // 指定数据库在HDFS上的存放位置
    WITH DBPROPERTIES (‘creator‘=‘xw‘,‘date‘=‘2017-04-10‘);

常看所有数据库

show databases;

查看数据库结构

desc database <databasename> ;

查看数据库结构及扩展信息

desc database extended <databasename>;

修改数据库结构,增加数据库属性

alter database <databasename> set dbproperties(‘created‘=‘xw‘); [属性即是键值对,可以自行添加]

显示所有的表

show tables;

查看表结构

desc <tablename>;

查看表结构及扩展信息

desc extended <tablename>;
desc formatted <tablename>;         // 友好显示

创建表,MySQL记录表的描述信息,对应HDFS上的表文件夹,不加修饰则是内部表[托管表 managed_table 即由Hive管理]

create table <tablename>(id int, name string, age int,...)
comment ‘table description‘                                         // 表的描述
row format delimited                                                // 定义分隔符
fields terminated by ‘,‘                                            // 列分隔符,用于HQL查询某一字段时,对文本进行分割
lines terminated by ‘\n‘                                            // 行分隔符
stored as textfile;                                                 // 以文本形式存储,也可以是序列文件或RC文件
[e.g.
1. create table test(id int, name string, age int) comment ‘table description‘ row format delimited fields terminated by ‘,‘ lines terminated
   by ‘\n‘ stored as textfile;
2. CREATE TABLE if not exists test (name string, str_arr ARRAY<string>, t_struct STRUCT<sex:string,age:int>, t_map MAP<string,int>, t_map_arr
   MAP<string,ARRAY<string>> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘|‘ COLLECTION ITEMS TERMINATED BY ‘,‘ MAP KEYS TERMINATED BY ‘:‘;
]
注:分隔符不能为分号

从本地加载数据,即插入数据,即将数据put到HDFS上的对应文件夹中

LOAD DATA LOCAL INPATH ‘...[本地路径]‘ OVERWRITE INTO TABLE <tablename>;        // 省去local则是加载集群上的数据,该加载时移动[剪切]
                                                                               // overwrite 会覆盖原来的数据

重命名表名

alter table <tablename> rename to <new tablename>;

添加列

alter table <tablename> add columns(...)

复制表

create table default.test1 like mybase.test2;       // 复制mybase数据库中的test2到default中的test1,只复制表结构,不复制数据

创建表的时候复制数据,该功能不能用于外部表

create table <tablename> as select ... from <tablename> where ...

复制表数据,批量插入

insert into <tablename> select ... from <tablename> where ...

导出数据,即把hive[hdfs]中的数据导出到本地

insert overwrite local directory ‘...[local path]‘ select * from test where ...

连接join

Hive默认的是mapjoin
属性设置为hive.auto.convert.join,默认是true
动态设置mapjoin
    SELECT /*+ MAPJOIN(table_name) */ ...
mapjoin不支持以下操作:
    在UNION ALL, LATERAL VIEW, GROUP BY/JOIN/SORT BY/CLUSTER BY/DISTRIBUTE BY之后使用
    在UNION, JOIN, and 另一个 MAPJOIN之前使用

类型转换

cast(value as type);
select cast(‘100‘ as int) from xxx;

修改分隔符

alter table <tablename> set serdeproperties (‘field.delim‘ = ‘,‘);

修改表位置

alter table <tablename> set location ‘...[path]‘;

保护表[不能被删除]

alter table <tablename> enable no_drop;
alter table <tablename> disable no_drop; // 取消保护

离线表[不能查询]

alter table <tablename> enable offline;
alter table <tablename> disable offline; // 取消离线

导出表到hdfs

EXPORT TABLE employee TO ‘/home/xw/tmp‘;
从hdfs上导入数据到一张新表中
IMPORT TABLE empolyee_imported FROM ‘/home/xw/tmp‘;

排序

1. order by         全局排序
2. sort by          每个reducer排序,并不整体排序
3. DISTRIBUTE BY    类似于分组
4. CLUSTER BY       先DISTRIBUTE BY后sort by,即先分组[reducer],后组内排序
时间: 2024-10-11 12:15:47

【Hive】概述及常用命令的相关文章

hive常用命令

hive常用命令 show tables; 列出hive里面所有数据表名 desc userProfile; 显示数据表userProfile的基本表字段及字段type desc extended trackinfo; 显示数据表trackinfo的详细信息,包括字段说明,数据表等 /usr/local/cloud/hive/bin/hive 进入hive数据库 select attribute_name from pms_attribute where attribute_id=21000 a

Hive Shell 常用命令

Hive  命令行常用命令 加载数据 load data local inpath '/home/IVR_CSR_MENU_MAP.txt' into table ivr_csr_menu_map; 分区的: load data local inpath '/home/lftest/lf1.txt' overwrite into table lf_test partition(dt=20150927); 加overwrite会覆盖原数据(已有的话)若不加,又有原数据,则会生成一个copy文件 l

二、hive shell常用命令

在使用hive shell之前我们需要先安装hive,并启动hdfs 请参考:https://www.cnblogs.com/lay2017/p/9973298.html hive shell 我们先进入安装目录 cd /usr/local/hadoop/hive/apache-hive-1.2.2-bin 使用Hive命令启动hive shell hive 查看一下数据库,发现有一个默认的default 我们需要创建一个新的test数据库 再看一下数据库,test数据库已经创建完成了 我们切换

hive\hadoop 常用命令

-1------ 后台跑程序语句: 在shell下输入: nohup hive -f  aaa.sql >bbb.log 2>&1 & 然后把sql 的脚本导入服务器上:Transfer-Zmodem upload List 相关命令:jobs:可以看到运行的任务,:cat bbb.log 可以看到这个任务运行情况 ====2================ 文件传输: 打印列名语句:set hive.cli.print.header=true; set hive.groupb

Hive - 常用命令

1. 创建表 创建表的语句: Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORT

&#8203;RMAN常用命令

RMAN常用命令 rman常用命令crosscheckreportobsolete681.SHOW命令:   1.1.RMAN> show all;      显示rman参数配置2.REPORT命令:   2.1.RMAN> report schema                          报告目标数据库的物理结构   2.2.RMAN>report need backup days=n;              报告最近n天没有被备份的数据文件   2.3.RMAN&g

hbase shell常用命令

hive常用命令 show tables; 列出hive里面所有数据表名 desc userProfile; 显示数据表userProfile的基本表字段及字段type desc extended trackinfo; 显示数据表trackinfo的详细信息,包括字段说明,数据表等 /usr/local/cloud/hive/bin/hive 进入hive数据库 select attribute_name from pms_attribute where attribute_id=21000 a

MYSQL的常用命令和增删改查语句和数据类型

连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>MySQL</a> -h[主机地址] -u[用户名] -p[用户密码] 创建<a href="http://lib.csdn.net/base/my

大数据每日干货第四天(linux基础之一目录结构与常用命令)

为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop.hive.flume.hbase等,再到实时数据分析包括storm.kafka.redias等,最后的内存计算部分包括scala.spark.机器学习,这样循序渐进,能够系统化学习. linux基础部分会分几天进行分享,今天主要讲解的是linux介绍,目录机构与常用的命令. 1.linux介绍 lLinux是一种