【Spark】spark使用jdbc连接带有kerberos认证的hive jdbc

Spark-SQL连接Hive 的五种方法 阅读详情

背景

这个需求就是spark不通过spark-hive的方式访问hive数据,而是通过spark读取hive jdbc的方式访问hive数据,因为这个hive有kerberos认证,在网上也不是很容易搜索到这样的操作案例。不多bb,直接上教程。

准备工作

准备一个hive-jaas.conf内容如下:

com.sun.security.jgss.initiate {
 com.sun.security.auth.module.Krb5LoginModule required
 useKeyTab=true
 keyTab="xxx.keytab"
 principal="xxx@XXX.XXX.COM"
 doNotPrompt=true;
};

这里的头的xxx替换成你环境中对应的配置就行了

测试代码如下:

public class App {
    public static void main(String[] args) {
        SparkSession spark = SparkSession.builder().master("local").getOrCreate();
        JdbcDialects.registerDialect(new HiveDialect());
        Properties properties = new Properties();
        properties.setProperty("driver", "org.apache.hive.jdbc.HiveDriver");
        Dataset<Row> jdbcDF = spark.read().jdbc("jdbc:hive2://your_hive_server2_address:10000/database;principal=hive/_HOST@XXX.COM;auth=Kerberos", "database.table", properties);
        jdbcDF.show();
        spark.stop();
    }
}

这个代码的作用就是使用spark jdbc API通过hive jdbc去连接hive读取hive中的一张表,然后执行展示。
这里要注意下这个jdbc的连接地址和后面跟随的参数:

jdbc:hive2://your_hive_server2_address:10000/database;principal=hive/_HOST@XXX.COM;auth=Kerberos
里头your_hive_server2_address写成你的环境里对应的地址。
后面的principal 也是配置成你的环境中对应的principal

这里头有一个HiveDialect是因为我测试的时候,发现在spark jdbc生成查询语句的时候查询语句会是select 'database.column1',database.column2'....这样的查询sql,程序是会报错的。如果有这样的问题的话,需要注册一个自定义的Spark jdbc的方言

  • HiveDialect 代码类如下:
public class HiveDialect extends JdbcDialect {
    @Override
    public boolean canHandle(String url) {
        return url.startsWith("jdbc:hive2") || url.contains("hive");
    }

    @Override
    public String quoteIdentifier(String colName) {
        colName=colName.split("\\.")[1];
        return "`" + colName + "`";
    }
}

代码差不多写完了。最后使用maven打包上传到服务器上,包括那个hive-jaas.conf文件,还要额外上传 krb5.conf,xxx.keytab文件上去。
提交命令:

spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 2G \
--driver-cores 2 \
--num-executors 2 \
--executor-memory 2G \
--executor-cores 2 \
--files file:///opt/xxx.keytab,file:///opt/krb5.conf,file:///opt/hive-jaas.conf \
--conf "spark.driver.extraJavaOptions=-Djava.security.auth.login.config=hive-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=krb5.conf" \
--conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=hive-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=krb5.conf" \
--conf spark.dynamicAllocation.enabled=false \
--conf spark.yarn.maxAppAttempts=1 \
--name spark_read_jdbc_with_hive \
--class com.example.App \
example-spark-read-hive-jdbc-1.0-SNAPSHOT.jar

注意里头的--files 参数和--conf的参数。
至此,整个教程结束。
最后到服务器上跑一把就好了。

总结

如果各位阅读过的大佬,有什么更好建议请在评论区中留言,谢谢大哥们!

kerberos-2.datagrip(jdbc)连接hive kerberos 拿到认证所需要的服务器keytab文件 例如需要访问hive,则首先需要hive权限的秘钥文件,默认地址为/etc/security/keytabs/ 最好使用服务端hive的jdbc驱动进行连接,防止版本兼容问题。 编写安全服务文件 创建一个文件用来登录验证 com.sun.security.jgss.initiate{ com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true use. 阅读详情

相关推荐

DBeaver企业实战:用Fiber组件同时管理Hive/Spark/Phoenix连接

本文详细介绍了在DBeaver中利用华为FusionInsight的Fiber组件,统一管理Hive、Spark和Phoenix连接的实战方案。通过集中配置Kerberos认证和JDBC驱动,解决了企业级大数据环境下多数据源连接繁琐、认证复杂的问题,显著提升了数据查询与管理的效率与安全性。

weixin_29209825的博客 433

kerberos-04.spark连接kerberos认证的hive

在服务器下载配置文件放在本地项目resources目录下 定义好kerberos认证方法,先进行认证再执行其他代码即可,示例代码如下 import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession import org.apache.hadoop.security.UserGroupInformation object day03 { def main(args: Array[String]): Unit = .

github_39319229的博客 1278

DataGrip连接Spark ThriftServer保姆级教程:从配置到SQL实战

本文提供了一份详尽的DataGrip连接Spark ThriftServer实战指南。从环境准备、驱动配置、连接参数设置到常见问题排查与SQL开发技巧,手把手教你解决连接失败、驱动冲突等难题,并分享性能调优与团队协作的最佳实践,助力数据工程师高效进行分布式SQL开发。

y7z8a的博客 522

Spark SQL数据源:JDBC

Spark SQL还可以使用JDBC API从其他关系型数据库读取数据,返回的结果仍然是一个DataFrame,可以很容易地在Spark SQL中处理,或者与其他数据源进行连接查询。执行上述命令(dbtable属性的值是一个子查询,相当于SQL查询中的FROM关键字后的一部分)注意:Spark 2.4.0开始的Spark SQL的JDBC属性里才有query属性。将数据帧内容以jdbc格式写入数据库spark_db的test表。查看结果数据帧内容,执行命令:resultDF.show()

梁辰兴的博客 4117

Spark Thrift Server连接实战:从配置hive-site.xml到DBeaver测试的完整避坑指南

本文详细介绍了Spark Thrift Server的连接配置与DBeaver测试的完整避坑指南,涵盖hive-site.xml配置、关键参数解析、元数据存储陷阱及DBeaver连接技巧。通过实战案例和性能调优建议,帮助开发者高效解决常见问题,提升SparkSQL查询效率。

weixin_30338481的博客 116

Kerberos安全认证-连载10-Hive Kerberos 安全配置及访问_idea连接 kerberos 认证的hiveserver2

技术连载系列,前面内容请参考前面连载9内容:​​​​​​​Hive底层数据存储在HDFS中,HQL执行默认会转换成MR执行在Yarn中,当HDFS配置了Kerberos安全认证时,只对HDFS进行认证是不够的,因为Hive作为数据仓库基础架构也需要访问HDFS上的数据。因此,为了确保整个大数据环境的安全性,Hive也需要配置Kerberos安全认证,这样可以控制对Hive和底层HDFS数据的访问权限,防止未经授权的访问和操作,确保数据的安全性。目前对HDFS进行了Kerberos安全认证后,在Hive。

2401_87204893的博客 1509

Sparkling Water与Hive集成教程:构建企业级机器学习数据管道 [特殊字符]

在大数据时代,**Sparkling Water与Hive集成**为企业提供了一个强大的机器学习解决方案。Sparkling Water巧妙地将H2O-3的先进机器学习功能与Apache Spark集群无缝结合,而Hive作为企业级数据仓库,存储着海量的业务数据。本文将为您详细介绍如何构建这条高效的数据管道,让您的机器学习项目如虎添翼!✨ ## 🔍 为什么需要Sparkling Water与H

gitblog_00936的博客 1134

Spark 本地连接远程服务器上带有kerberos认证的Hive

前言 因为公司的测试环境带有kerberos,而我经常需要本地连接测试集群上的hive,以进行源码调试。而本地认证远程集群的kerberos,并访问hive,和在服务器上提交Spark程序代码有些不同,所以专门研究了一下 并进行总结。 服务器上 在服务器上提交Spark程序认证kerberos比较简单,有两种方法: 使用kinit 缓存票据 kinit -kt /etc/security/keytabs/hive.service.keytab hive/indata-192-168-44-128.inda

主要分享大数据相关的知识,如Spark、Hudi 5313

Kerberos 认证的Hive Java/Scala Api

Kerberos 认证的Hive Java/Scala Api 配置文件: #加载kerberos 配置文件,如果不加载,会默认在本地:c:/windows/krb5.ini 或者集群 /etc/krb5.conf 寻找 kerberos.conf = C:/Users/user/Desktop/keytable/krb5.conf #Hive JDBC连接参数 hive.driver = or...

wu的博客 1327

Ubuntu22.04中通过conda快速部署PyTorch开发环境(CPU/GPU双版本实战)

本文详细介绍了在Ubuntu22.04系统中,如何利用Conda高效部署PyTorch开发环境。文章分别提供了CPU与GPU双版本的实战教程,涵盖环境创建、镜像加速、版本匹配及深度验证等关键步骤,旨在帮助开发者快速搭建稳定、兼容的深度学习环境,从而专注于模型开发。

rose2的博客 556

Windows 10 本地开发环境:用 ShardingSphere-Proxy 5.4.1 快速搭建 MySQL 分库分表测试环境

本文详细介绍了在Windows 10系统中使用ShardingSphere-Proxy 5.4.1快速搭建MySQL分库分表测试环境的完整教程。从环境准备、MySQL配置到ShardingSphere-Proxy的核心设置,逐步指导开发者完成本地开发环境的搭建,并提供了分片策略详解和常见问题排查方法,帮助开发者高效验证分库分表功能。

weixin_28366053的博客 214

Spark Thrift Server连接踩坑实录:DBeaver连不上?可能是这几个配置没搞对

本文详细解析了Spark Thrift Server连接DBeaver时的常见问题及解决方案,包括服务端配置、DBeaver驱动选择、认证权限、类路径冲突和网络设置等关键环节。特别针对SparkSQL连接稳定性问题,提供了实用的配置优化建议和性能调优技巧,帮助开发者高效解决连接难题。

weixin_30329623的博客 437

【影像组学】用3Dslicer或Python提取影像组学特征

用3Dslicer或Python提取影像组学特征

abdslfwoeugp 1万+

本地pyspark 通过kerberos认证,请求kudu(本地不需要下载kerberos,不用使用shell打开kinit),连接服务器hive

你当然需要在本地装好spark,hadoop,java等环境,保证线上不使用kerberos认证的时候,你的pyspark是可用的。如果不行,请参考我的另一篇文章,当然同样先保证你的环境是OK的,并且环境变量这些都配置好了,同时hosts中的路由也配好了。至于环境变量怎么配置,如何安装,自己查资料吧,我懒得写了写这篇文章主要是百度的可用资料太少,然后这几天刚好碰上我google用不了,再则资料太散乱了,我自己调通之后,就分享出来了。第二步:1. 将hosts中的路由配置好,具体的配置规则问hive小伙伴要2

u013153465的博客 1447

Ubuntu20.04安装Ceres库

ceres真难安装。

little_white138的博客 8379

数学建模之0—1规划(Python)

目录 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1​ (2)案例2 3、遗传算法—sko-GA包实现 (1)代码 (2)结果 4、PuLp实现 (1)代码 (2)结果 5、致谢 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1 (2)案例2 3、遗传算法—sko-GA包...

weixin_46039719的博客 4112

避坑指南:DBeaver连接Spark-SQL时常见的5个配置错误及解决方法

本文针对DBeaver连接Spark-SQL时常见的配置难题,提供了详细的避坑指南。重点解析了网络端口、JDBC驱动、权限认证、资源配置及Hive Metastore连接这五大核心环节的典型错误现象与解决方案,帮助用户高效排查并建立稳定连接,从而提升数据操作效率。

weixin_28224217的博客 256

ros_gz_bridge__镜像__readme

Run。

1113

大数据生态系统组件交互的 Python 客户端库,它们分别对接不同的分布式服务

- `hdfs`:轻量级 HDFS REST API(WebHDFS)客户端,支持文件上传、下载、目录操作等; - `pyhive`:Hive 和 Trino(原 PrestoSQL)的 Python DB-API 兼容客户端,支持 Kerberos 认证和 SSL; - `kafka-python`:纯 Python 实现的 Apache Kafka 生产者/消费者客户端,功能完整但性能略低于 C 客户端; - `happybase`:基于 Thrift 协议访问 Apache HBase 的高级 Pyt

[Blog][Domain] programb.blog.youkuaiyun.com 518

【数据可视化-77】中国历年GDP数据可视化分析:Python + Pyecharts 深度洞察(含完整数据、代码)

通过上述可视化分析,我们可以清晰地看到中国历年GDP的变化趋势和产业构成。玫瑰图展示了2024年的产业构成,地图和柱状图展示了GDP的时空分布,双轴折线图和雷达图则分别展示了GDP总量与人均GDP的变化以及各行业的GDP贡献。希望这篇文章能帮助您更好地理解和分析中国历年GDP数据。如果您有任何问题或建议,欢迎在评论区留言!🎉。

qq_38614074的博客 1472

数字IC/FPGA 秋招知识点不全面整理

数字IC/FPGA 秋招知识点不全面整理

w0shishabi的博客 7866

SparkSQL实战:通过DBeaver与Thrift Server构建可视化数据查询平台

本文详细介绍了如何利用DBeaver客户端工具连接Spark Thrift Server,快速构建一个可视化的SparkSQL数据查询与分析平台。通过实战部署、配置详解与连接指南,帮助数据分析师和工程师摆脱命令行束缚,实现高效的数据探索、SQL查询与结果可视化,显著提升数据交互与分析效率。

dapp9builder的博客 435

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Kerberos安全认证-连载10-Hive Kerberos 安全配置及访问

1.Hive 配置 Kerberos2. Hive Cli使用Kerberos​​​​​​​3. Hive beeline使用Kerberos​​​​​​​​​​​​​​4. JDBC访问Kerberos认证Hive​​​​​​​5. Spark访问Kerberos认证Hive​​​​​​​​​​​​​​6. Flink访问Kerberos认证Hive技术连载系列,前面内容请参考前面连载9内容:​​​​​​​。

m0_59598029的博客 2565

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

04、Kerberos安全认证之配置和访问Kerberos安全认证的Hive集群学习笔记

04、Kerberos安全认证之配置和访问Kerberos安全认证的Hive集群学习笔记

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 2806

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 【Spark】Spark的DataFrame向Impala写入数据异常及源码解析
芹菜学长
博客等级 码龄10年 193粉丝 106原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值