从clouderavm中的hdfs将数据加载到配置单元表中

pgky5nke  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(406)

使用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中,所以我不知道为什么会出现这个错误或如何修复它。

yhived7q

yhived7q1#

如何访问hdfs中的信息
好吧,你当然不需要用Hive来做。 hdfs dfs 命令是您与hdfs交互的方式。
我不确定那是什么,但它似乎不是hdfs的根目录
它是hdfs的根源。 quickstart.cloudera 是vm的主机名。端口8020是hdfs端口。
你的例外是使用 LOCAL 关键字。
你在做什么

LOAD DATA INPATH <hdfs location>

和你想要的相比

LOAD DATA LOCAL INPATH <local file location>

或者,如果文件在hdfs中,不清楚您是如何将文件放入其中的,但是hdfs肯定没有/home文件夹或桌面,因此第二个错误至少是有意义的。
不管怎样, hdfs dfs -put /test/students.text /test/ 是上传文件的一种方法,假设 hdfs:///test 文件夹已存在。否则, hdfs dfs -put /test/students.text /test 将文件重命名为 /test 在hdfs上
注意:您可以在hdfs目录上创建外部表,不需要使用load data命令。

相关问题