【问题标题】:Loading data into Hive Table from HDFS in Cloudera VM在 Cloudera VM 中从 HDFS 将数据加载到 Hive 表中
【发布时间】:2017-12-19 22:44:57
【问题描述】:

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

通过 Hive CLI 创建 Hive 表后,我尝试从位于 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 中的数据加载到 Hive 表中,如下所示:

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

【问题讨论】:

    标签: hadoop hive hdfs cloudera-cdh cloudera-quickstart-vm


    【解决方案1】:

    如何访问 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>
    

    或者如果文件在 HDFS 中,不清楚你是如何将文件放入其中的,但 HDFS 肯定没有 /home 文件夹或桌面,所以第二个错误至少是有道理的。

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

    注意:您可以在 HDFS 目录上创建一个 EXTERNAL TABLE,您不需要使用 LOAD DATA 命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多