kettle写入hadoop中——AccessControlException

本文详述了使用Kettle进行数据导入至HDFS的方法,并通过一个具体案例演示整个流程。针对执行过程中可能遇到的权限问题,文章提供了具体的解决方案,包括如何设置ACL以赋予用户写权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

好,下面上货。

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的转换就能欧成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值