在Spark中连接两个具有不同用户名的HDFS服务器

时间:2016-02-06 00:26:05

标签: apache-spark hdfs

有没有办法从HDFS中获取数据(例如使用sc.textFile),在同一个Spark作业中有两个单独的用户名?例如,如果我在hdfs-server-1.com上有一个文件,并且alice用户有权查看它,并且我在hdfs-server-2.com上有一个文件,并且bob用户有权查看它,我和#39;我希望能够做到这样的事情:

val rdd1 = sc.textFile("hdfs://hdfs-server-1.com:9000/file.txt", user="alice")
val rdd2 = sc.textFile("hdfs://hdfs-server-2.com:9000/file.txt", user="bob")

有没有办法做这样的事情?或者Spark只能使用与其运行的用户名相同的用户名连接到HDFS吗?

1 个答案:

答案 0 :(得分:0)

据我所知(过去我曾尝试使用Spark 1.4.0),这是不可能的:默认情况下,Spark使用运行驱动程序进程的用户来访问HDFS。运行驱动程序应用程序时,可以使用HADOOP_USER_NAME VM选项覆盖用户(例如-DHADOOP_USER_NAME=alice)。构造SparkContext时会读取此选项,因此之后无法更改。

相关问题