栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Datagrip/Hue 使用load data命令加载数据到HDFS上, 报错:invalid path

Datagrip/Hue 使用load data命令加载数据到HDFS上, 报错:invalid path

命令:

load data local inpath '/root/my_data/01_cookie.txt' into table test.t_cookie;

把linux系统hive中执行,把/root/my_data/01_cookie.txt文件加载到集群中hdfs的/user/hive/warehouse下test库t_cookie表,命令成功。

但是该语句放到datagrip上或者Hue上执行,显示“路径错误,找不到文件”

①首先排除路径问题

能在Linux系统下执行,则说明路径没有问题。

local关键字表示Hive在本地寻找文件(即Linux系统下)(拷贝文件),本地文件路径也可以指定完整的URI:

file:root/my_data/01_cookie.txt

若从hdfs上导数据,完整URI为:(移动文件,非拷贝,)

hdfs://namenode:9000/root/my_data/01_cookie.txt

如果没有Local关键字,Hive会根据完整的URI加载数据。

如果没有Local关键字,文件路径没有指定完整的URI,Hive默认从HDFS的目录下寻找文件(参数fs.default.name指定)

补充:如果对HiveServer2服务运行此命令。这里的本地文件系统指的是Hiveserver2服务所在机器的本地Linux文件系统,不是Hive客户端所在的本地文件系统。

②用户权限问题

linux系统上是root用户,在datagrip上也是用root用户连接Hive,按理来说,用户相同,权限也应该一样。但是该命令在datagrip和Hue上执行都显示找不到文件,后面给/root文件夹、/my_data文件夹和01_cookie.txt文件全部加上“777”的权限就可以了。

排查了一番,原来是其他用户组没有权限。显示找不到文件是因为:没有给其他用户组对/root文件夹添加可执行权限。于是:

chmod o+x /root
chomd o+x /root/my_data
chmod o+r /root/my_data/01_cookie.txt

上层文件夹添加可执行权限才能进入文件夹中查找文件,文件要添加可读权限才能被读。

但是,不建议给其他用户组增加对/root的权限。

那么问题来了,使用root用户通过datagrip连接的Hive,为什么会被分到其他用户组呢?

Hive的管理员用户在Cloudera Manager中叫做hive,而我们使用root用户连接,但实际操作还是hive用户在实现管理,hive用户是没有权限读取/root用户目录下得文件的。(root用户登录Linux系统是root用户有权限,root用户通过datagrip连接Hive实际是hive用户。)

建议做法:即使是root用户登录Linux系统,还是不要把文件放在/root目录下,其他用户组想要读取文件需要修改对/root目录的权限,不安全。最好把文件放到非/root目录下。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/707923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号