当前位置: 首页 > news >正文

Java使用hive连接kyuubi

标识

一、Maven依赖

<dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>2.3.9</version>
</dependency>

二、相关配置信息

驱动类:org.apache.hive.jdbc.HiveDriver连接URL:jdbc:hive2://xxx:2181,xxx:2181/;principal=hadoop/xxx@EMR-GMxxx;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi;?spark.app.name=test-kyuubi;kyuubi.engine.share.level=USER;spark.submit.deployMode=cluster;kyuubi.session.engine.check.interval=PT5M;kyuubi.session.engine.idle.timeout=PT30M;
【注意】:
principal 配置的信息为账号鉴权信息
zooKeeperNamespace 需要指定为 kyuubi
?后的参数为kyuubi配置参数

三、 Kerberos 身份验证

1、需要准备两个文件,可以从集群kerberos配置里拷贝
krb5 /app/data/config/kerberos/krb5.conf
krb5Keytab /app/data/config/kerberos/emr.keytab2、获取账号
krb5hadoop hadoop/xxxx@EMR-QX9xxxx3、加载代码
/*** 加载hive krb 配置*/public void loadingHiveKrbConfig() {try {log.info("加载hive krb 配置");System.setProperty("java.security.krb5.conf", krb5);Configuration configuration = new Configuration();configuration.setBoolean("hadoop.security.authorization", true);configuration.set("hadoop.security.authentication", "Kerberos");UserGroupInformation.setConfiguration(configuration);if (UserGroupInformation.isLoginKeytabBased()) {log.info("UserGroupInformation.isLoginKeytabBased() is ture");UserGroupInformation.getLoginUser().reloginFromKeytab();} else {log.info("UserGroupInformation.isLoginKeytabBased() is false");UserGroupInformation.loginUserFromKeytab(krb5hadoop, krb5Keytab);}log.info("ticketCache=====>" + UserGroupInformation.isLoginTicketBased());} catch (Exception e) {log.error("加载hive krb 配置 失败:", e);e.printStackTrace();}}

四、连接代码

Connection connection = null;HiveStatement statement = null;HiveQueryResultSet resultSet = null;try {loadingHiveKrbConfig();Class.forName("org.apache.hive.jdbc.HiveDriver"));connection = DriverManager.getConnection(url);statement = (HiveStatement) connection.createStatement();resultSet = (HiveQueryResultSet) statement.executeQuery(sql);} catch (Exception e) {e.printStackTrace();} finally {try {if (null != resultSet) {resultSet.close();}if (null != statement) {statement.close();}if (null != connection) {connection.close();}} catch (final Exception e) {e.printStackTrace();}}

http://www.lryc.cn/news/104178.html

相关文章:

  • 性能测试基础知识(三)性能指标
  • 【 Redis】的乱码问题
  • 虚拟机安装的问题
  • seldom之数据驱动
  • 设计模式:生成器模式
  • Gradle同步任务一直不动问题(非网络情况)
  • STM32使用HAL库BH1750光照度传感器
  • qt代码练习
  • PoseiSwap:首个基于模块化设施构建的订单簿 DEX
  • Linux NameSpace 虚拟化 资源隔离
  • 【Android Framework系列】第9章 AMS之Hook实现登录页跳转
  • 哪些行业需要连接云专线?
  • 【Mysql】group语句删除重复数据只保留一条
  • Git详解和命令大全
  • 北漂Java程序员入职五个月的收获总结
  • Android系统的进程管理(创建->优先级->回收)
  • C#界面美化小技巧
  • ‘vite‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • Linux下查阅帮助文档必学命令 man
  • uniapp scroll-view显示滚动条
  • 15、PHP神奇的数组索引替代
  • 同为科技(TOWE)带热插拔功能机柜PDU插座的应用
  • GR5526 128BIT UUID改16BIT UUID
  • 【Android】使用 CameraX 实现基础拍照功能
  • 刷题笔记 day2
  • 回归预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络多输入单输出回归预测
  • 使用UltraISO制作麒麟v10系统盘
  • 【RabbitMQ】之消息的可靠性方案
  • 性能测试/负载测试/压力测试之间的区别
  • Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper