我们正在开发风暴和蜂巢集成,其中strom将通过配置单元写入数据HDFS。但是,我们部署的拓扑由strom运行(在运行风暴拓扑的集群上创建的用户)。但是,配置单元没有用户风暴,我们不想创建它(出于某些原因)。它失败并出现以下异常
org.apache.hadoop.security.AccessControlException: Permission denied: user=strom, access=WRITE, inode="/user/tales/table":hdfs:hdfs:drwxr-xr-x
用户X创建了表格。 我知道这个案子可以通过
来解决 http://doc.mapr.com/display/MapR/Hive+User+Impersonation - 使用这个我们可以从hive配置模拟用户
OR
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
禁用用户授权。
您是否知道,我们可以在写入Hive表时通过Java代码模拟用户X?
答案 0 :(得分:0)
该MapR帖子是一个不同的问题:HiveServer2 (JDBC服务)代表远程客户端运行查询,这是真正的客户端/服务器模拟(如runAs
中所示)。 / p>
在你的情况下,它更像伪造另一个身份。或使用头像。 [在此插入您的首选类比] 无论如何:
HADOOP_USER_NAME
是可行的方式,无论是作为Java属性还是作为env变量;例如,请参阅that post