Hive 库表操作

一、Hive DDL 操作
        Hive DDL用于定义Hive 数据库模式,其命令包括create、drop、alter、truncate、show
和describe等,主要是对数据库和表进行创建、修改、删除等操作。

1.1数据库操作
(1)创建数据库

【语法】
CREATE (DATABASESCHEMA) [IF NOT EXISTS] database _name
[COMMENT database_comment]
[LOCATION hdfs_path][WITH DBPROPERTIES

示例2-1
创建empdb数据库。
关键代码:
hive>create database empdb;
        > show databases;
        > use empdb;
   其中,“show databases;”显示数据库列表,“useempdb;”选择empdb作为当前操作
的数据库。

(1)修改数据库
【语法】
ALTER (DATABASEISCHEMA) database_name SET DBPROPERTIES(property _name-property_value

(1)删除数据库
【语法】
DROP (DATABASEISCHEMA) [IF EXISTS] database _name [RESTRICTICASCADE];
默认情况下使用RESTRICT 删除数据库。

如果数据库非空,则使用RESTRICT 删除
数据库将会失败,此时须使用CASCADE 级联删除数据库。

1.2表操作
1)创建表

【语法】
CREATE [TEMPORARY][EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
[(col data_ type [COMMENT col_comment],...[constraint specification])]
[COMMENT table_comment]

[PARTITIONED BY (col data_type [COMMENT col_comment],.)]
[CLUSTERED BY (col,.)[SORTED BY(col[ASC|DESC],.)]INTO num_buckets BUCKEE
[SKEWED BY(col,..)
        ON((Col_ value, col_ value,.),(col_value, col_value,.),..)
        [STORED AS DIRECTORIES]

[
[ROW FORMAT row_format]
[STORED AS file format]
|STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (..)]

]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name-property_value, ..)]
创建表语法中的关键点介绍如下。
        >CREATE TABLE:创建一个指定名称的表,如果存在同名表,则抛出异常。可
使用“IFNOTEXISTS”忽略该异常。
        > EXTERNAL:表示该表为外部表,须同时指定实际数据的HDFS 路径LOCATION.
注意:当表被删除时,实际数据不会被删除。
        >TEMPORARY:指定该表为临时表,被Hive0.14之后的版本支持。临时表只对
当前会话有效,会话退出后临时表自动删除。注意,临时表不支持分区与索引。
        > PARTITIONED BY:创建表的时候可以同时为表创建一个或多个分区。     

        >CLUSTERED BY:分桶,让数据能够均匀地分布在表的各个数据文件中。        

        > ROWFORMAT:用于指定序列化与反序列化器(Serializer/Deserializer,SerDe)。

Hive 使用SerDe 读写表的每一行数据。如果 ROW FORMAT 未指定或者指定了“ROW FORMAT DELIMITED”,Hive 将使用内置的SerDe来确定表中具体字段的数据。

【语法】
ROW FORMAT
        DELIMITED
                [FIELDS TERMINATED BY char]
                [COLLECTION ITEMS TERMINATED BY char]
                [MAP KEYS TERMINATED BY char]
                [LINES TERMINATED BY char]


        >STOREDAS:如果表中数据是文本数据,则使用TEXTFILE;如果数据需要压
ISERDE serde name [WITH SERDEPROPERTIES. (..)]
缩,可使用SEQUENCEFILE等。

2)修改表
修改表包括重命名、添加列、更新列等操作。表重命名的语法如下。
【语法】
ALTER TABLE table_name RENAME TO new_table name。
示例2-3
将雇员表“employee_external”改名为“employee_cxt”.
关键代码:
hive> alter table employee external rename to employee ext;

添加和更新列的语法如下。
【语法】
ALTER TABLE table_name ADD|REPLACE
COLUMNS (col name data_type[COMMENT col_comment]....
示例2-4
在雇员表“employee_ext”中增加一列“empid”。
关键代码:
hive> alter table employee_ext add columns(empid string);

二、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关键字设定参数覆盖命令行设定参数,命令行设定参数又覆盖配置文件设定参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值