配置单元分区-如何删除空分区或配置单元\u默认\u分区

mgdq6dx1  于 2021-06-26  发布在  Hive
关注(0)|答案(4)|浏览(812)

我在配置单元中遇到了配置单元默认分区(空分区)的问题。我将在这里简要说明情况。。我有一个Hive主表和数据摄取发生在该表每天。但不知何故,当数据被摄取到配置单元表中时,出现了一些问题,分区显示为\u配置单元\u默认\u分区\u或在我的理解中是空分区。
我需要从配置单元表中删除分区(它是外部表)。。。
我正在使用hive版本1.1和cdh版本5.4.8。。
我尝试了下面的语法,但它对我不起作用。。

alter table "tablename" drop partition(partn='_hive_default_partition_);

alter table "tablename" drop partition(partn<'1');

alter table "tablename" drop partition(partn = 1);

alter table "tablename" drop partition(partn='0');

我试了以上所有的步骤,但都没用。。
希望有人能帮我。
提前谢谢,

wkyowqbh

wkyowqbh1#

我分三步实现了这一点
使用hadoopfs-rm-r-skiptrash从hdfs中删除分区数据。 hadoop fs -rm -r -skipTrash /apps/hive/warehouse/<db-name>/<table-name>/<partition-name>=__HIVE_DEFAULT_PARTITION__ 打开配置单元客户端并运行 set hive.msck.path.validation=ignore; 在配置单元客户端中运行此 MSCK REPAIR TABLE <db-name>.<table-name>;

ubbxdtey

ubbxdtey2#

只需从hdfs中删除目录并运行msck repair table。
来自壳牌: hadoop fs -rm -r ..../partn=__HIVE_DEFAULT_PARTITION__ 从Hive壳: msck repair table table_name;

vyswwuz2

vyswwuz23#

我的工作方式是更改分区列的数据类型,删除分区并将其更改回来。
考虑到您正在将分区与问题中的int进行比较,我假设这是要开始的列数据类型,但是不管您开始的数据类型是什么,这都应该是有效的。 -- Change the column type to string ALTER TABLE tablename PARTITION COLUMN (partn STRING); -- Drop the offending partitions ALTER TABLE tablename DROP PARTITION (partn='HIVE_DEFAULT_PARTITION'); -- Change the column type back to int ALTER TABLE tablename PARTITION COLUMN (partn INT);

gmxoilav

gmxoilav4#

试试这个:

alter table `tablename` drop if exists partition (partn<>'');

相关问题