HIVE分区表移动到另一个DB

时间:2015-03-18 13:59:56

标签: hadoop hive

  • 我从HIVE终端创建了两个数据库DB1和DB2。
  • 跑"使用DB1"并创建了ORC格式的表T1,其分区为年,月和日,并加载了一些记录。
  • ran"使用DB2",在那里我创建了ORC格式的表T2 suing DDL脚本,它与DB1.T1具有相同的结构。
  • 我在DB2.T2中插入了一些记录,以便在HDFS-Hive仓库中为分区创建一些目录结构。
  • 我跑了Hadoop fs -cp /apps/hive/warehouse/DB1.db/T1/* /apps/hive/warehouse/DB2.db/T2
  • 它复制了文件并在/apps/hi../DB2.T2中构建了剩余的目录结构。

问题是从DB2中选择计数.T2没有返回从DB1.T1复制的最新记录。

有人可以解释背后的原因吗? 它适用于普通的文本格式表。

谢谢,

ABHI

1 个答案:

答案 0 :(得分:0)

为了更快地获取记录计数等统计信息,HIVE现在可以从插入过程中更新的元数据中获取(只有例外情况是元数据没有填充计数)。如果要手动将分区或文件添加到hive表,请确保运行ANALYZE命令,如下所示。

analyze table t [partition p] compute statistics for [columns c,...];

同样,如果不通过hive命令手动添加分区,请运行repair table命令

MSCK REPAIR TABLE table_name;
or 
ALTER TABLE table_name RECOVER PARTITIONS;