【问题标题】:Read File on HDFS Using Kerberos Authentication Using PySpark使用 PySpark 使用 Kerberos 身份验证读取 HDFS 上的文件
【发布时间】:2019-12-03 10:41:39
【问题描述】:

我有一个带有 Kerberos 身份验证的 HDFS 集群。如何使用 PySpark 读取 HDFS 上的文件。

【问题讨论】:

  • 您需要在客户端创建一个 keytab,并要求 HDFS 管理员将您的 keytab 添加到 conf。如果这有帮助,请告诉我cloudera.com/documentation/enterprise/5-5-x/topics/…
  • @Preetham 我已经使用 kinit 命令创建了密钥表。我可以使用 KerberosClient(hdfs python 库)读取 HDFS 上的 csv 文件。只是不知道如何使用 PySpark
  • 好的,现在你可以通过另外两个配置来启动 pyspark --keytab --principal
  • @Preetham 我只在这一点上有疑问。我不知道如何在创建 SparkSession 时传递这两个配置。你能帮忙吗
  • 这将有助于 spark-submit --master --conf spark.yarn.keytab=path_to_keytab --conf spark.yarn.principal=principal@REALM.COM ,您有 2 个选项可以同时使用调用 spark 提交或在代码内部调用,您可以使用 SC 配置进行设置,请记住,如果您在代码中执行此操作,请确保 sc.stop 并重新启动

标签: pyspark hdfs kerberos webhdfs


【解决方案1】:

尽量避免过多的 cmets,这是你可以做的:

custom_conf={
                 "master":"local[*]",
                 "spark.executor.memory" : "44g",
                 "spark.executor.cores" : "60",
                 "spark.executor.instances":"60",
                 "spark.yarn.keytab" : <path to keytab>,
                 "spark.yarn.principal" : <principal name@domain>,
                 "appName" : <specify app name>
                    }

sc_conf = SparkConf()
sc = sc = SparkContext()

sc_conf.setAppName(custom_conf["appName"])
sc_conf.setMaster(custom_conf["master"])
sc_conf.set('spark.executor.memory', custom_conf["spark.executor.memory"])
sc_conf.set('spark.executor.cores', custom_conf["spark.executor.cores"])
sc_conf.set('spark.yarn.keytab', custom_conf["spark.yarn.keytab"])
sc_conf.set('spark.yarn.principal', custom_conf["spark.yarn.principal"])
sc_conf.set('spark.executor.instances', custom_conf["spark.executor.instances"])



try:
    sc.stop()
    sc = SparkContext(conf=sc_conf)
except:
    sc = SparkContext(conf=sc_conf)

那么您就可以使用新的 sc 进行处理了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2021-07-28
    相关资源
    最近更新 更多