You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:46:19