使用clouderavm时,如何访问hdfs中的信息?我知道hdfs没有直接的路径,但是我也不知道如何动态地访问它。
通过配置单元cli创建配置单元表后,我尝试从位于hdfs中的文件加载一些数据:
load data inpath '/test/student.txt' into table student;
但是我得到了一个错误:
FAILED: SemanticException Line 1:17 Invalid path ''/test/student.txt'': No files matching path hdfs://quickstart.cloudera:8020/test/student.txt
我还尝试将hdfs中没有的数据加载到一个配置单元表中,如下所示:
load data inpath '/home/cloudera/Desktop/student.txt' into table student;
但是,刚刚产生了以下错误:
FAILED: SemanticException Line 1:17 Invalid path ''/home/cloudera/Desktop/student.txt'': No files matching path hdfs://quickstart.cloudera:8020/home/cloudera/Desktop/student.txt
我再一次看到它试图用 hdfs://quickstart.cloudera:8020
我不确定那是什么,但它似乎不是hdfs的根目录。
我不确定我做错了什么,但我确定文件位于hdfs中,所以我不知道为什么会出现这个错误或如何修复它。
1条答案
按热度按时间yhived7q1#
如何访问hdfs中的信息
好吧,你当然不需要用Hive来做。
hdfs dfs
命令是您与hdfs交互的方式。我不确定那是什么,但它似乎不是hdfs的根目录
它是hdfs的根源。
quickstart.cloudera
是vm的主机名。端口8020是hdfs端口。你的例外是使用
LOCAL
关键字。你在做什么
和你想要的相比
或者,如果文件在hdfs中,不清楚您是如何将文件放入其中的,但是hdfs肯定没有/home文件夹或桌面,因此第二个错误至少是有意义的。
不管怎样,
hdfs dfs -put /test/students.text /test/
是上传文件的一种方法,假设hdfs:///test
文件夹已存在。否则,hdfs dfs -put /test/students.text /test
将文件重命名为/test
在hdfs上注意:您可以在hdfs目录上创建外部表,不需要使用load data命令。