【问题标题】:How to create a table on top of HDFS folders with subfolders and multiple csv files如何在具有子文件夹和多个 csv 文件的 HDFS 文件夹上创建表
【发布时间】:2020-03-05 23:08:45
【问题描述】:

我们有一个类似/data/year/day/.csvfiles 结构的 hdfs 文件夹, 所以我们每天在 hdfs 文件夹中存储多个 csv 文件 例如/finance/2019/20190101/ multiple csv files。 同样,/finance/2019/ 中将有 365 个文件夹,一年 365 天。 我想在/finance/2019/ 之上创建一个 Hive 表,这样我就可以查询所有数据,但是我的创建表只有在我指定特定文件夹(例如/finance/2019/20190101/)时才有效,然后查询返回结果集。 如果我尝试创建位置为/finance/2019/ 的表,则该表无法检索任何数据,结果始终为 0。

【问题讨论】:

  • 您还可以利用分区和分桶概念来获得更好的性能。

标签: hadoop hive hdfs


【解决方案1】:

要从 subdirectories 读取数据,请设置这些属性!

hive> SET hive.mapred.supports.subdirectories=TRUE;
hive> SET mapred.input.dir.recursive=TRUE;

再次尝试从 hive 表中选择数据。


如果您不想每次都在 hive shell 中设置这些属性,请将这些属性添加到您的 hive-site.xml 文件中

<property>
    <name>mapred.input.dir.recursive</name>
    <value>true</value>
  </property>

  <property>
    <name>hive.mapred.supports.subdirectories</name>
    <value>true</value>
  </property>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2018-08-09
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多