将数据从Cloudera VM中的HDF加载到Hive表中



使用Cloudera VM时,如何访问HDFS中的信息?我知道没有直接通往HDF的直接途径,但我也看不到如何动态访问它。

通过Hive 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

我还尝试将不在HDF中的数据加载到这样的蜂巢表中:

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中,所以我不知道为什么会出现此错误或如何解决。

如何访问HDFS

中的信息

好吧,您当然不需要使用Hive来做到这一点。hdfs dfs命令是您与HDFS互动的方式。

我不确定那是什么,但是它似乎不是HDFS

的根目录

它是HDFS的根。quickstart.cloudera是VM的主机名。端口8020是HDFS端口。


您的异常来自使用LOCAL关键字的差异。

您在做什么

LOAD DATA INPATH <hdfs location>

vs您似乎想要什么

LOAD DATA LOCAL INPATH <local file location>

或者如果文件位于HDF中,则尚不清楚您如何将文件放入其中,但是HDFS肯定没有/主文件夹或桌面,因此至少第二个错误是有道理的。

无论如何,hdfs dfs -put /test/students.text /test/是上传文件的一种方法,假设hdfs:///test文件夹已经存在。否则,hdfs dfs -put /test/students.text /test 将您的文件重命名为HDFS上的/test

注意:您可以通过HDFS目录创建外部表,您无需使用加载数据命令。

相关内容

  • 没有找到相关文章

最新更新