我正在使用带有scala的spark来读取特定的Hive分区。分区是year,month,day,a和b
scala> spark.sql("select * from db.table where year=2019 and month=2 and day=28 and a='y' and b='z'").show
但是我得到这个错误:
org.apache.spark.SparkException:由于阶段失败而导致作业中止:阶段0.0中的任务236失败4次,最近一次失败:阶段0.0中的任务236.3(TID 287,服务器,执行器17)丢失:org.apache.hadoop。 security.AccessControlException:权限被拒绝:user = user,access = READ,inode =“ / path-to-table / table / year = 2019 / month = 2 / day = 27 / a = w / b = x / part-00002 “:user:group:-rw-rw ----
如您所见,spark试图读取一个不同的分区,而我在那里没有权限。
不应该这样,因为我创建了一个过滤器,而这个过滤器就是我的分区。
我用Hive尝试了相同的查询,并且运行完美(无访问问题)
Hive> select * from db.table where year=2019 and month=2 and day=28 and a='y' and b='z'; …