gpt4 book ai didi

hadoop - 使用SPARK数据框的方法 “saveAsTable”时权限被拒绝

转载 作者:行者123 更新时间:2023-12-02 21:22:39 26 4
gpt4 key购买 nike

我正在使用Spark 1.3,并且试图从一个RDD生成一个表。这是伪代码:

val sc = new org.apache.spark.SparkContext(conf)
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
import sqlContext.implicits._

val rdd1=sc.textFile(path_1).map(........) // RDD[(string,Double)]
val rdd2=sc.textFile(path_2).map(........) // RDD[(string,Double)]
val rdd_join=rdd1.fullOuterJoin(rdd2) // RDD[String,(Option(Double),Option(Double)))
val rdd_get = rdd_join.map(....} // RDD[(String,Double,Double)]
rdd_get.toDF().saveAsTable("database.tablename")

运行此代码时,出现权限错误:

org.apache.hadoop.security.AccessControlException:权限被拒绝:user = XXXXXXXX,access = WRITE,inode =“/ user / hive / warehouse”:hive:hive:drwxrwx--x:user:hive:rwx,group::---,group:hive:rwx

如果我将表创建为:
  rdd_get.toDF().registerTempTable("rdd_get_temp")
sqlContext.sql("CREATE TABLE database.tablename AS SELECT * FROM rdd_get_temp")

然后,它工作并创建表。看起来saveAsTable()试图使用我的用户写入“/ user / hive / warehouse”(kerberization禁止这样做),而sqlContext.sql正确使用用户“hive”来执行此操作。

我对吗??这是一个错误吗?它可以在更新的Spark版本中使用吗?

谢谢大家

最佳答案

SaveAsTable创建一个物理表,而registerTempTable在内存中创建一个(临时)表。
没错,用户需要适当的权限才能创建物理表。

关于hadoop - 使用SPARK数据框的方法 “saveAsTable”时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36887967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com