在现有配置单元表上添加分区

时间:2016-01-08 13:47:32

标签: sql hadoop hive

我正在处理一个大蜂巢桌(超过5000亿条记录)。 处理速度太慢,我想让它更快。 我认为通过添加分区,这个过程可能更有效率。

有人能告诉我怎么做吗? 请注意,我的表已经存在。

我的表:

create table T(
nom string,
prenom string,
...
date string)

对日期字段进行分区。

THX

2 个答案:

答案 0 :(得分:2)

 SET hive.exec.dynamic.partition = true;

SET hive.exec.dynamic.partition.mode = nonstrict;

INSERT OVERWRITE TABLE table_name PARTITION(Date) select date from table_name; 

注意: 在分区表的insert语句中,确保在select子句中的最后一行指定分区列。

答案 1 :(得分:1)

你必须重组表格。以下是步骤:

  1. 确保没有其他进程写入表格。
  2. 使用分区创建新的外部表
  3. 从旧表格中选择
  4. 插入新表格
  5. 删除新表(外部),只删除表但数据将在那里
  6. 放下旧桌子
  7. 通过指向步骤2下的位置
  8. 创建具有原始名称的表格
  9. 您可以运行修复命令来修复所有元数据。
  10. 替代4,5,6和7

    1. 通过在新表上运行show create table并使用原始表名
    2. 替换,创建具有原始名称的表
    3. 运行LOAD DATA INPATH命令将分区下的文件移动到新表的新分区
    4. 删除创建的外部表
    5. 这两种方法都将通过一次插入/地图缩减工作实现重组。

相关问题