你当然需要在本地装好spark,hadoop,java等环境,保证线上不使用kerberos认证的时候,你的pyspark是可用的。如果不行,请参考我的另一篇文章,pyspark 连接远程hive,当然同样先保证你的环境是OK的,并且环境变量这些都配置好了,同时hosts中的路由也配好了。至于环境变量怎么配置,如何安装,自己查资料吧,我懒得写了
写这篇文章主要是百度的可用资料太少,然后这几天刚好碰上我google用不了,再则资料太散乱了,我自己调通之后,就分享出来了。
第二步:
1. 将hosts中的路由配置好,具体的配置规则问hive小伙伴要
2. 和使用未认证的spark一样,将三个*.xml文件放入spark的配置文件中:
本地路径为:
/spark安装目录/conf
前三个文件,如果你大数据那边需要配置5个,那就是这5个,差别不大,自己参考自己的:
第三步:
新建一个目录,我这边取名叫做keytab,然后将hive.keytab 文件放入目录中,问管这个hive集群的小伙伴要,现在目录就是这样的:
第一个hive_ccache_uid 先不用管,自动生成的缓存文件。后面看到代码你自己就明白了
第四部:
好了,准备工作做好了,开始代码
1. 安装依赖包
pip install krbcontext
同样的,我也默认认为你其他的包比如pyspark之类的都装好了
2. 示例代码:
import findspark
findspark.init() # 初始化,这句话不写,你前面应该有被报错的体验了
import os
from pyspark.sql import SparkSession
from krbcontext.context import krbcontext
os.environ['JAVA_HOME'] = '/opt/java/jdk1.8.0_11' #jdk路径,不加这个会有报错
config = {
"kerberos_principal": "hive/hive@LHBOOO.COM", # 填入自己实际的,问hive小伙伴要
"keytab_file": '/home/linhb/snap/keytab/hive.keytab', # 刚才我要你配置的路径
"kerberos_ccache_file": '/home/linhb/snap/keytab/hive_ccache_uid' # 自动生成文件的路径
}
# 要让pyspark 包在krbcontext执行,如果你要引用这个spark,只能自己测试办法了。我就是帮同事通过认证下
with krbcontext(using_keytab=True,
principal=config['kerberos_principal'],
keytab_file=config['keytab_file'],
ccache_file=config['kerberos_ccache_file']):
spark = SparkSession.builder.master("local[*]")
.appName("hive")
.enableHiveSupport().getOrCreate()
spark.conf.set("spark.sql.execution.arrow.pyspark.enabled", "true")
spark.conf.set('spark.driver.memory', '8g')
spark.conf.set('spark.executor.memory', '4g')
spark.sql("use 你的hive数据库")
df = spark.sql("show tables")
df.show(10)
好了,大功告成,我个人认为是比较简单的版本了。大家自行取用把



