一、Hive DDL 操作
Hive DDL 用于定义 Hive 数据库模式,其命令包括 create、drop、alter、truncate、show和 describe 等,主要是对数据库和表进行创建、修改、删除等操作。
1.数据厍操作
(1)创建数据库
【语法】
CREATE (DATABASE/SCHEMA) [IF NOT EXISTS] database name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES
(property_ name-property_value,***)];
(2)修改数据库
【语法】
ALTER (DATABASE|SCHEMA) database_name
SET DEPROPERTIES(property_ name-property_ value,.......)
(3)删除数据库
【语法】
DROP (DATABASE|SCHEMA) [IF EXISTS] database name [RESTRICT|CASCADE];
默认情况下使用 RESTRICT 删除数据库。如果数据库非空,则使用 RESTRICT 删除数据库将会失败,此时须使用 CASCADE 级联删除数据库。
2.表操作
(1)创建表
【语法】
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_ name.)table name [(col data_type [COMMENT col
_comment], ... [constraint_specification])]
[COMMENT table_comment]
(2)修改表
修改表也括重命名、添加列、更新列等操作。
表重命名的语法如下。
【语法】
ALTER TABLE table name RENAME TO new table name.
3. DDL 其他常用命令
除了对数据库和表的创建和修改外,DDL还包括其他常用操作
二、Hive DML 操作
1.1 数据转载与插入
一般使用两种方式实现数据装载,分别是load和insert命令,二者有明显的区别。
> load命令不对数据进行任何转换,只是简单地将数据复制或者移动至Hive 表对应的位置。
> insert 命令将会执行MapReduce 作业并将数据插入至Hive表中,一般使用
较少。
(1)load命令
【语法】
LOAD DATA [LOCAL] INPATH'filepat
OVERWRITE]INTO TABLE table name [PARTITION(partcoll=val1,partcol2-val2..….)]
>LOCAL:限制为本地文件系统路径,如果没有该关键字则是HDFS路径。>OVERWRITE:覆盖目标文件夹中的数据,如果没有该关键字且目标文件夹中已存在同名文件,将保留之前的文件,新文件名后缀以自动序号区分。
> PARTITION:如果目标表是分区表,须使用该关键字为每个分区键指定一个值。
1.2数据更新、删除与合并
从0.14版本起Hive 支持数据更新与删除操作,从2.2版本起Hive支持数据合并操
是数据仓库解决方案,不适合进行更新、删除等事务操作。
1.3 数据导入/导出
(1) export
【语法】
EXPORT TABLE table name [PARTITIO
(partcol=partval..)] TO 'export_target path'
例如:
hive> export table emp to '/tmp/emp";
上述命令将导出emp表至HDFS目录/tmp/emp,包括其元数据与实际数据。在实际使用过程中,通常也利用insert命令完成数据的导出。
【语法】
INSERT OVERWRITE [LOCAL] DIRECTORY directory SELECT... FROM.
例如:
hive> insert overwrite local directory'/home/hadoop/hive/empdb.emp' select * from emp;
(2) import
【语法】
IMPORT[[EXTERNAL]TABLE new_or_original tablename [PARTITION(partcoll=vall,….]
FROM 'source_ path' [LOCATION 'import target path']
例如:
hive> import table emp new from'/tmp/emp';
上述代码将向HDFS目录/tmp/emp导入数据并生成新的内部表emp_new。
1.4数据执行计划查询
Hive 提供explain命令,可显示数据查询的执行计划。
【语法】
EXPLAIN [EXTENDEDlASTDEPENDENCYAUTHORIZATIONILOCKSIVECTORIZATION] query
例如:
hive> explain select * from emp;
三、Hive Shell 操作
1.1Hive 命令行
前面提到,无论是CLI还是Beeline, Hive Shell 都可以通过两种模式运行,即交互模式与命令行模式。
【语法】
hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>k-e query-string>] [-S] [-d]
主要参数使用说明如下。
_i:从文件初始化HQL。
-e:从命令行执行指定的HQL。
2024.04
-f:执行HQL脚本,与-作用类似。
-S:静默模式,在交互式模式中仅输出主要信息,即去掉“OK”和“Time taken...
-d:自定义变量,以便在HQL脚本中使用。
-hiveconfx=y:配置Hive/Hadoop参数。
示例2-9
使用Hive命令行运行一个查询。
输入命令:
$ hive -e'select count(1) from empdb.emp'
输出结果:
OK
4
Time taken:52.286 seconds, Fetched: 4 row(s)
1.2Hive 参数配置方式
(1)配置文件设定参数
用户自定义配置文件:SHIVE_HOME/conf/hive-site.xml,全局永久配置,修改后需要重启Hive服务。
(2)命令行设定参数
启动Hive 客户端(或其处于Server 模式)时,可以通过在命令行添加-hiveconf param—value 来设定参数,例如:
$ hive -hiveconf hive.root.logger=INFO,console
这一设定只对本次启动的Session有效。如果以Server 模式启动,则对所有请求的Session 都有效,例如:
$ hive --service hiveserver2 --hiveconf hive.root.logger-INFO,console
(3)SET 关键字设定参数
可以在HQL中通过使用 SET 关键字来设定参数,这一设定的作用域也是Session级别的,例如:
set mapred.reduce.tasks=100;
上述3种设定方式的优先级依次递增,即SET关键字设定参数覆盖命令行设定参数,命令行设定参数又覆盖配置文件设定参数。