【问题标题】:Reading mutiple directories using HIVE external table使用 HIVE 外部表读取多个目录
【发布时间】:2016-09-15 04:58:12
【问题描述】:

我在 HDFS 中有一个目录(例如 /user/hduser/table1),在该目录下有多个目录用于不同的时间戳,例如 /user/hduser/table1/20160912000000/user/hduser/table1/20160912100000/user/hduser/table1/20160912121000

如何通过一个 HIVE 外部表读取这三个目录下的所有文件。表示我必须在 HIVE 表的 LOCATION 参数中指定什么。

【问题讨论】:

    标签: hive


    【解决方案1】:

    我可以使用以下设置读取嵌套文件夹。

    set hive.mapred.supports.subdirectories=true;
    set mapred.input.dir.recursive=true;
    

    我确实在创建表格时设置了它,然后能够从表格中选择数据。我在下面提到的位置关键字

    LOCATION '/user/hduser/table1/'
    

    【讨论】:

      【解决方案2】:

      试试下面的代码

      CREATE TABLE TABLEname  (coll INT, coll STRING, coll INT)
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY ‘,’
      LOCATION ‘/user/hduser/table1/*/*’;
      

      【讨论】:

      • 这不起作用,因为我有如下文件 "/user/hduser/table1/20160912000000/file1 & /user/hduser/table1/20160912000000/file2" , "/user/hduser/table1/ 20160912100000/file3 & /user/hduser/table1/20160912100000/file4" 和 "/user/hduser/table1/20160912121000/file5 & /user/hduser/table1/20160912121000/file6"。我想读取从 file1 到 file6 的所有文件
      • 我已经编辑了答案,假设 /user/hduser/table1/ 下会有与同一张表相关的文件
      • 不,如上所述使用 LOCATION 值后仍然没有获取数据。
      • 输出是什么或错误是什么......或那里的任何额外文件夹......
      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 2020-01-06
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多