kettle写入hadoop中——AccessControlException

本文主要介绍如何通过kettle写入到hdfs中,同时提供一个简单的demo。

好,下面上货。

1、新建一个转换,如下图:

kettle写入hadoop中——AccessControlException_第1张图片

2、执行转换,查看结果:

 

uuid;uuid2
a2d5022e-0ace-4978-bc01-82a46025078f;515n2b280cij7
5cdf9c28-e587-43ea-a470-8653ebf4f635;1ccujkgiu3vdv
1bacfdee-24fd-4bb3-ba05-30a3542e670c;6i3d3rk8fvl6e
20f79956-6708-42fd-8f18-ae8566389f18;5g4nleaqi8ebu
113182ac-bd2b-4567-93b6-88028a22e376;4vnf9cr7ike04
55ed09c9-a902-4ccb-b40b-f3b7334d41df;1ujqbg56p1e9h
f51b337e-8c27-40da-9cae-5164dfb6ce61;vnuphrau91u9
e36446b7-97d5-4ac4-801e-642845cb64c6;2bg2qkvrnb5r2
adea9b13-2621-43c2-8834-27504348d9db;5dbh1loj9i8su
114f258a-d43d-4dee-a28b-7e0fbffddb1d;7abpjvapo3lmi

 

3、可能遇到的问题。

Caused by: org.pentaho.bigdata.api.hdfs.exceptions.AccessControlException: Permission denied: user=wuxueyou, access=WRITE, inode="/user/root/etl":root:supergroup:drwxr-xr-x

这个异常的主要原因是当前用户没有对应的hdfs文件夹的写权限,导致异常。解决的方案有两种。一种是使用acls,一种是使用sentry。我们这里只介绍使用acls的方式。主要参考:

https://blog.csdn.net/wild46cat/article/details/69664376

4、进入hadoop中,切换到hdfs账户。

hdfs dfs -setfacl -R -m user:wuxueyou:rwx /user/root

然后查看文件的访问权限

[hdfs@cdh1 root]$ hdfs dfs -getfacl /user/root/etl

# file: /user/root/etl

# owner: root

# group: supergroup

user::rwx

user:wuxueyou:rwx

group::r-x

mask::rwx

other::r-x

 

然后再次执行etl的转换就能欧成功了。

你可能感兴趣的:(kettle,pentaho,hadoop,pentaho)