Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在spark submit中,是否有方法将spark附带的hdfs委派令牌用于其他hdfs连接?_Apache Spark_Pyspark_Hdfs_Kerberos - Fatal编程技术网

Apache spark 在spark submit中,是否有方法将spark附带的hdfs委派令牌用于其他hdfs连接?

Apache spark 在spark submit中,是否有方法将spark附带的hdfs委派令牌用于其他hdfs连接?,apache-spark,pyspark,hdfs,kerberos,Apache Spark,Pyspark,Hdfs,Kerberos,下面是一个场景:我有一个运行spark的python应用程序,我通过spark submit部署它。 spark可以访问hdfs,但当我尝试使用hdfs python包(例如mkdir)访问时,我会遇到身份验证问题,就好像驱动程序机器上没有kinit一样。有没有办法从spark上下文导出hdfs委派令牌,并使用它以某种方式“绑定”驱动程序机器 Spark在JVM中运行,Python代码通过Py4J接口(以及pyspark包装器)调用Java/Scala对象和方法。如果您直接调用Py4J接口来模拟

下面是一个场景:我有一个运行spark的python应用程序,我通过spark submit部署它。
spark可以访问hdfs,但当我尝试使用hdfs python包(例如mkdir)访问时,我会遇到身份验证问题,就好像驱动程序机器上没有kinit一样。有没有办法从spark上下文导出hdfs委派令牌,并使用它以某种方式“绑定”驱动程序机器

Spark在JVM中运行,Python代码通过Py4J接口(以及pyspark包装器)调用Java/Scala对象和方法。如果您直接调用Py4J接口来模拟Java代码,并调用本地hdfsjavaapi,那么您可能能够利用现有的令牌。否则…
\u Java=spark.sparkContext.\u gateway.jvm
tokens\u in\u static\u UGI=\u Java.org.apache.hadoop.security.UserGroupInformation.getCredentials()
(???胡乱猜测-这是一个公共方法,但我不知道Spark是否使用默认的UGI,HDFS令牌是否存储在那里,以及它是否显示在getter方法中)无论如何,您不想弄乱委托令牌,您希望通过
org.apache.hadoop.fs.FileSystem.get(
hadoop conf
)检索HDFS连接器的现有实例
使用PySpark没有公开的Hadoop conf对象!您必须再次通过Py4J访问Spark java API…长话短说:阅读该博客