【问题标题】:I used INSERT OVERWRITE DIRECTORY. Now how do I access that file?我使用了插入覆盖目录。现在如何访问该文件?
【发布时间】:2013-06-12 19:09:12
【问题描述】:

显然是 HDFS 的新手,甚至不知道要搜索什么来获得帮助。

我的大部分表都在 HDFS 中 user/hive/warehouse 下的数据库中。我想将 SELECT 结果存储到我有写入权限的目录中,所以我将它存储到 user/Jon/folder_name 中,这样就可以了。

现在如何访问此文件中的数据?工作目录是 user/hive/warehouse,我没有在 /Jon/folder_name 文件夹中创建表(它只是一个文件)。我正在尝试从 folder_name 运行一个基本的 SELECT count(*),但我不知道从哪里开始让它工作。

【问题讨论】:

    标签: hadoop hive hdfs


    【解决方案1】:

    乔恩,我不知道这是否是最好的方法,但它肯定会达到目的。

    完成insertion 后,您将在目标目录中获得类似000000_0 的文件。我知道它是有线的,但文件名是 000000_0。如果您的查询有超过 1 个减速器,那么您将获得多个文件,例如 000000_0、000001_0、000002_0 等。

    假设您发出了以下具有 1 个减速器的查询:

    hive> INSERT OVERWRITE DIRECTORY '/Jon/folder_name' SELECT * FROM table_name;
    

    现在创建一个external table,使用/Jon/folder_name/000000_0 作为其位置,然后进行选择。像这样:

    hive> CREATE EXTERNAL TABLE table_name2(id INT, name STRING) LOCATION '/Jon/folder_name/000000_0';
    

    然后,

    hive> select count(*) from table_name2;
    

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-12
      • 2013-10-10
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多