Jupyter Notebook中PySpark的Kerberos认证问题求助
解决Jupyter Notebook中PySpark Kerberos认证问题
显式配置SparkSession的Kerberos参数
终端启动pyspark时会自动加载Hadoop的Kerberos配置,但Notebook中创建SparkSession时可能未默认启用。需在构建SparkSession时添加Kerberos相关配置:from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("KerberosAuthTest") \ .config("spark.hadoop.security.authentication", "kerberos") \ .config("spark.hadoop.dfs.namenode.kerberos.principal", "nn/<你的主机名>@<你的Kerberos域>") \ .getOrCreate()替换上述配置中的主机名和Kerberos域为实际值,确保Spark明确使用Kerberos认证而非默认的SIMPLE模式。
同步Kerberos票据缓存路径
Notebook中执行!kinit生成的票据缓存可能与Spark进程的环境变量不一致。先在Notebook中设置与终端一致的票据缓存路径:import os # 先在终端执行echo $KRB5CCNAME获取路径,替换下方值 os.environ['KRB5CCNAME'] = '/tmp/krb5cc_1000'再执行
!kinit <<<'<你的密码>',确保Spark进程能读取到有效票据。确保先完成认证再创建SparkSession
如果在执行kinit前已创建SparkSession,Spark会以SIMPLE模式初始化,后续认证无法生效。必须先完成kinit和环境变量配置,再构建SparkSession。加载正确的Hadoop配置文件
若Notebook中的Spark无法读取Hadoop的core-site.xml、hdfs-site.xml配置(这些文件中已定义Kerberos认证规则),需显式指定配置目录:spark = SparkSession.builder \ .appName("KerberosAuthTest") \ .config("spark.hadoop.conf.dir", "/etc/hadoop/conf") \ .getOrCreate()替换为你的Hadoop配置实际路径。
验证配置生效情况
创建SparkSession后,可通过以下命令确认Kerberos配置是否生效:# 查看认证模式 print(spark.sparkContext.hadoopConfiguration.get("hadoop.security.authentication")) # 查看票据状态 !klist若输出为
kerberos且票据有效,说明配置正确。
内容的提问来源于stack exchange,提问作者34jbonz
相关产品推荐
相关产品推荐

