【问题标题】:loading data to hive dynamic partitioned tables将数据加载到 hive 动态分区表
【发布时间】:2016-06-29 08:55:03
【问题描述】:

我创建了一个在列上具有动态分区的配置单元表。有没有办法使用“LOAD DATA”语句直接从文件中加载数据?还是我们只需要创建一个非分区的中间表并将文件数据加载到其中,然后将数据从这个中间表插入到分区表中,如Hive loading in partitioned table中提到的那样?

【问题讨论】:

    标签: dynamic hive partitioning


    【解决方案1】:

    不,LOAD DATA 命令仅将文件复制到目标目录。它不读取输入文件的记录,因此不能根据记录值进行分区。

    如果您的输入数据已经根据分区拆分为多个文件,您可以直接将文件复制到 HDFS 中您手动创建的分区目录下的表位置(或者在 EXTERNAL 表的情况下仅指向它们的当前位置)并使用以下 ALTER 命令添加分区。这样您就可以完全跳过 LOAD DATA 语句。

    ALTER TABLE <table-name>
    ADD PARTITION (<...>)
    

    【讨论】:

    • 如果是External table,将文件放入目录后,我们可以运行msck命令自动创建分区吗?
    【解决方案2】:

    没别的了,如果要直接插入,就需要手动指定分区了。

    对于动态分区,我们需要临时表,然后从那里插入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 2015-03-07
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      相关资源
      最近更新 更多