一、hadoop 没有权限的解决方案
问题
在 windows 上使用 kettle 连接 hadoop 写文件的时候,默认使用的是本机登录用户作为文件属主访问 HDFS 文件的,如果目标路径权限不允许,就会报错。
解决方案
1、修改 HDFS 目录权限
使用 HDFS 管理员登录将相关目录设置为所有人可写,比如 777 权限
2、在 kettle 中指定操作 HDFS 的用户
由于 HDFS 的 Java API 访问是通过获取HADOOP_USER_NAME
这个变量来设置用户的,所以可以手动设置该值为 HDFS 上有权限的用户名即可。
1)通过在Spoon.bat
中设置
在set OPT=
这一行后面提添加内容: “-DHADOOP_USER_NAME=yourHdfsUser”
2)如果是 Java 代码,可以通过如下方式设置
System.setProperty("HADOOP_USER_NAME", "yourHdfsUser"); //指定属主
二、Linux上执行hdfs文件输出路径不正确
问题:可能创建了文件没有写数据,可能写到linux本地文件路径下,可以按如下设置试试:
在spoon.sh下修改参数 opt字符串里增加
-Dpentaho.karaf.root.transient=true
来源:oschina
链接:https://my.oschina.net/u/2314065/blog/2992025