HIVE实战处理(三)beeline和hive的区别

本文探讨了从Hive到Phoenix的数据迁移策略,包括使用Kettle、Shell脚本、SQL脚本及Beeline的不同场景应用。详细介绍了通过beeline执行HQL语句的步骤,以及如何处理UDF函数依赖的JAR文件,确保数据迁移的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、调度脚本

1、通过hive/beeline的方式

一般情况下的hive之间的数据的转换的话,是通过kettle工具执行的,所以也是在调度的时候传入kettle的执行脚本kitchen.sh。
一般操作:
一般生产多使用ETL工具(kettle)进行处理数据的插入

/opt/data-integration/kitchen.sh -file=%%G_PATH_ETL./adm/adm_qltsys/first_page_load_time_1d_delta_daily/main.kjb -param:DT=%%v_t_day. -level=Detailed

前提是kettle里面已经配置好了要连接的数据库
在这里插入图片描述
流程的话都是调度kettle脚本执行工作,最基本的也是同kettle连接hive,只是没有暴露数据连接ip以及集群的认证等重要信息。

2、如果是插入数据不能用kettle方式解决的那么生产常常是shell脚本和sql脚本结合使用,并进行调度使用。

二、生产实践

背景:
需求:要吧hive的数导入phoenix里,使用多列多条件的查询方式(用来代替hbase)对外暴露http接口给前端查询。

从hive到外部的数据导出的情况,像phoenix的话是没有必要通过kettle执行插入数据的(应该也是可以用的)。所以要用原生的hive命令执行插入数据。
1、hive方式
1)准备一个test-beeline.sql(从hive表 insert overwrite phoenix表)
2)准备一个调度插入的命令给调度工具

hive -hiveconf STATIS_DAY=%{TOOL_DT} -hiveconf STATIS_HOUR=%diao{TOOL_HOUR} -f %%G_PATH_ETL./adm/exp/test_beeline.sql
#1)%{TOOL_DT}或者${TOOL_DT} 参数的写法根据调度工具的不同写法不同
#2)生产使用的调度
#hive -hiveconf STATIS_DAY=%%v_t_day_exec. -hiveconf STATIS_HOUR=%{TOOL_HOUR} -f %%G_PATH_ETL./adm/exp/test_beeline.sql 

通过 参数- hiveconf的方式传入时间参数
通过 参数 -f 指定要执行的sql语句
如果是直接把执行命令传给调度工具也是可以的。

3)调度下执行脚本
在这里插入图片描述
4)报错问题分析
hive 执行一般的hql脚本的时候是正常,如果有什么特殊函数需要加载jar的话,本地如果没有的话就不是很适用了。
原因是hive命令的是会加载本地的hive环境,如果运行节点本地没有指定
jar的时候会报错误。

5)解决方案
在HQL语句中添加指定的JAR
在这里插入图片描述
然后使用hive -f方式执行插入数据。
2、beeline/beeline2方式
1)执行上面同样的程序

beeline -u 'jdbc:hive2://hadoop1:10003/acc;principal=hive/ddp-cm.cmdmp.com@CMDMP.COM'  -f  %%G_PATH_ETL./adm/exp/test_beeline.sql
#principal代表集群加了kerberos认证的,连接的时候一并传入。

2)本地测试beeline成功执行带插入数据:
在这里插入图片描述
3)成功数据分析
这种方式的连接hive集群的是直接访问hdfs的指定的UDF函数的,对于
beeline方式连接的时候相当于开启了hive的CLI客户端,首先会去本地环境中加载指定的JAR,如果没有的话就去指定的HDFS位置下寻找对应的JAR,
在创建udf函数的时候已经指定了特定的JAR的特定的java主类

CREATE  FUNCTION yanfa.mg_getuuid AS 'cn.migu.hive.udf.GetUUID' USING JAR 'hdfs://ns1/user/hadoop/hive_udf/original-mg-hive-udf-1.0.jar';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值