1.7.3、Hive CLI 和 Beeline及参数设置
2.hive终端常用指令
3.Hive高阶之Beeline与JDBC
7.3、Hive CLI 和 Beeline及参数设置
本文详细介绍了Hive CLI和Beeline的使用方法及参数配置,以帮助用户更高效地执行Hive相关操作。
### Hive CLI操作与参数设置
#### 1.1 Hive CLI基本命令
使用`hive -H`或`hive --help`命令查看所有命令的帮助信息。通过`hive`命令直接进入交互式命令行模式。云贝多源码
#### 1.2 执行SQL命令
不进入交互模式时,使用`hive -e`执行SQL命令。
#### 1.3 执行SQL脚本
脚本可以在本地文件系统或HDFS上执行。
#### 1.4 配置Hive变量
使用`--hiveconf`设置Hive运行时的变量,如`hive.exec.scratchdir`用于指定HDFS目录。
#### 1.5 配置文件启动
通过`-i`参数运行初始化脚本,等同于指定配置文件启动。
#### 1.6 用户自定义变量
`--define`和`--hivevar`功能相同,用于自定义变量。
#### 1.7 结果示例
定义和引用自定义变量后执行查询,展示结果。
### Beeline与参数
#### 2.1 HiveServer2与Beeline
HiveServer和HiveServer2允许多客户端并发访问,HS2支持身份验证,解读flask源码具有独立CLI(Beeline)。
#### 2.2 Beeline参数
Beeline支持更多参数,如`-u`、`-n`、`-p`等,用于连接参数设置,详情参考官方文档。
#### 2.3 连接示例
使用用户名和密码连接Hive:`beeline -u jdbc:hive2://localhost: -n username -p password`。
### Hive配置
#### 3.1 配置文件
使用配置文件永久设置参数,tomcat构造源码如`hive-site.xml`。
#### 3.2 hiveconf参数
命令行指定配置,作用于当前会话。
#### 3.3 set命令
在交互模式中设置参数,作用于当前会话。
### Hive参数优先级与配置
配置优先级依次为:配置文件->hiveconf->set命令。
### Hive常用参数
#### 4.1 hive merge小文件
合并小文件以优化Map任务,减少资源浪费。
#### 4.2 设置map/reduce参数
调整reduce个数、亚马逊程序源码内存等参数以优化任务执行。
### 总结与参考
Hive CLI和Beeline提供了灵活的参数设置方式,通过配置文件、命令行参数及交互命令实现参数调整,以优化Hive任务执行效率。参考官方文档获取更多详细配置信息。
hive终端常用指令
进入beeline用户
beeline -u 'jdbc:hive2://...:' -n -p ''
查看库/表
show databases/tables;
查看表结构
desc table_name;
创建表
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [ROW FORMAT row_format] [STORED AS file_format]
删除表或数据库
drop table table_name;
drop database database_name;
删除表中数据
truncate table table_name;
添加分区
alter table my_partition_test_table if not exists add partition (pdate=’’);
按分区删除数据
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...
创建测试表
create table ods_cmos.ods_bas_cmft_cosop_t_client_abnormal_info_test as select * from ods_cmos.ods_bas_cmft_cosop_t_client_abnormal_info where 1=0;
从测试表插入数据到目标表
带分区
INSERT OVERWRITE TABLE ods_bak_t_branch_info PARTITION (pdate = '--') SELECT * from ods_bak_t_branch_info_test WHERE pdate='--'
不带分区
INSERT OVERWRITE TABLE ods_bak_t_branch_info SELECT * from ods_bak_t_branch_info_test
插入数据
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
修改表
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
添加字段到最后
alter table table_name add columns (c_time string comment '当前时间');
移动到指定位置
alter table table_name change c_time c_time string after address ;
内置运算符
关系运算符、算术运算符、逻辑运算符、宏观指标源码复杂运算符
内置函数
聚合函数
视图和索引
创建视图
CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], ...) ] [COMMENT table_comment] AS SELECT ...
删除视图
DROP VIEW view_name
创建索引
CREATE INDEX index_name ON TABLE base_table_name (col_name, ...) AS ' index.handler.class.name' [WITH DEFERRED REBUILD] [IDXPROPERTIES (property_name=property_value, ...)] [IN TABLE index_table_name] [PARTITIONED BY (col_name, ...)] [ [ ROW FORMAT ...] STORED AS ... | STORED BY ... ] [LOCATION hdfs_path] [TBLPROPERTIES (...)]
删除索引
DROP INDEX ON
SELECT查询
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
ORDER BY
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition] [ORDER BY col_list]] [LIMIT number];
GROUP BY
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition] [ORDER BY col_list]] [LIMIT number];
JOIN
join_table: table_reference JOIN table_factor [join_condition] | table_reference { LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | table_reference LEFT SEMI JOIN table_reference join_condition | table_reference CROSS JOIN table_reference [join_condition]
Hive高阶之Beeline与JDBC
深入探讨Hive的高级使用,重点介绍了HiveServer2以及其对Beeline和JDBC的集成。
HiveServer2作为Hive的server端,为其他工具提供服务。启动该服务,便可利用远程访问执行Hive查询。
为了连接HiveServer2,使用Beeline方式实现。通过命令行界面进行连接,需要提供连接串,包含HiveServer2启动的默认端口,以及集群用户名和密码。
在Beeline界面中操作表就如同使用客户端模式,显示风格与MySQL相似,对输出格式做了优化。为了控制日志显示,可通过CM管理界面调整日志级别。
通过JDBC访问HiveServer2,首先需要获取与之对应的驱动。一个例子展示了利用JDBC进行表操作,包括删除、创建和查询表。这种方式适合前端页面展示Hive查询结果,适用于数据量不大,避免将结果导入其他数据库的情况。
然而,在使用JDBC访问时,遇到一些错误。连接驱动名与文档中的不符,原因在于文档未及时更新,以及未将hive连接改为hive2模式,这是正常执行操作的必要步骤。
在进行JDBC访问时,需注意的错误提示,比如连接串的正确性与驱动选择的一致性。一旦正确配置以上细节,便可顺利执行查询。