Hadoop新手使用Sqoop导入MySQL表到HDFS时遇权限拒绝错误
解决Sqoop导入HDFS时的权限拒绝问题
问题原因
HDFS根目录/的默认权限为drwxr-xr-x,所有者是hdfs:supergroup,普通用户(如cloudera)仅拥有读和执行权限,没有写权限,因此无法直接在根目录下创建目标文件夹/queryresult20。
解决方案
方案1:使用用户专属目录(推荐)
普通用户对自己的HDFS home目录/home/cloudera拥有完整读写权限,直接修改Sqoop命令的目标目录路径即可:
sqoop import \ --connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \ --username root \ --password cloudera \ --table categories \ --target-dir /home/cloudera/queryresult20
如果目标目录已存在,可添加--delete-target-dir参数自动删除原有目录:
sqoop import \ --connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \ --username root \ --password cloudera \ --table categories \ --target-dir /home/cloudera/queryresult20 \ --delete-target-dir
方案2:授权根目录下的目标文件夹
若必须将数据导入根目录,需先以hdfs用户创建目录并授权给cloudera用户:
- 切换到hdfs用户:
su hdfs - 创建目标目录:
hadoop fs -mkdir /queryresult20 - 修改目录所有者为cloudera:
hadoop fs -chown cloudera:cloudera /queryresult20 - 退出hdfs用户:
exit - 执行原Sqoop命令即可。
内容的提问来源于stack exchange,提问作者Ora Aff
相关产品推荐
相关产品推荐

