我期待SQL和HIVE中截断的相同行为。 但它与众不同。 我想确认我是否错误地认识到它
1)在SQL中,以下命令删除表并再次创建。如果存在,则删除所有分区
mysql> truncate table t1;
2)在HIVE中,以下命令只是删除表中的数据。它不会删除现有分区。我们需要手动删除它。
hive> truncate table t1;
我发现了另外一个问题,如果我们将列添加到分区表并更改它。然后在向表中插入覆盖数据时会出现问题。找到的办法是删除表中所有现有的分区。
这是HIVE(版本0.13)中的问题吗? 使用truncate进行HIVE和SQL有什么区别?
答案 0 :(得分:1)
在HIVE truncate table
中将删除表或分区中的所有行。
分区不会被删除。我们必须手动删除这些分区。
目前,目标表应该是本机/托管表,否则将抛出异常。