前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >hive大表rename异常如何处理?

hive大表rename异常如何处理?

原创
作者头像
艾利
修改2025-03-05 13:45:06
修改2025-03-05 13:45:06
960
举报

假设现有表 A,出于一些原因,想将其重命名为B,执行HSQL:

代码语言:txt
复制
alter table test_db.dm_order_xxx_a  RENAME TO test_db.dm_order_xxx_b

出现报错:

报错原因说明 :

  • 报错分析: 库和表不在同一个HDFS cluster上,导致在hive表在rename的过程中,mv HDFS目录的时候产生across federation的报错。
  • 其中, 库表不在同一个HDFS cluster的原因有:
    1. 用户手动指定了table locaiton
    2. 因FS cluster容量比较满时,BD同学将部分库的location迁到新的HDFS cluster上,此时历史表的location还在原来的cluster.

alter table rename 存在风险,强烈不建议这么操作。分区数越多,风险越大。可以参考下面的操作安全的进行rename:

  • 将表改成外表(rename外表不会操作HDFS)
代码语言:txt
复制
set tqs.query.engine.type=hive; -- 在风神SQL查询或Dorado HSQL执行需要添加这一行
alter table test_db.dm_order_xxx_a set tblproperties ('EXTERNAL' = 'true');
  • 重命名外表
代码语言:txt
复制
alter table test_db.dm_order_xxx_a  RENAME TO test_db.dm_order_xxx_b
  • 恢复成内表
代码语言:txt
复制
set tqs.query.engine.type=hive; -- 在风神SQL查询或Dorado HSQL执行需要添加这一行
alter table test_db.dm_order_xxx_b set tblproperties ('EXTERNAL' = 'FALSE');

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 假设现有表 A,出于一些原因,想将其重命名为B,执行HSQL:
  • 报错原因说明 :
  • alter table rename 存在风险,强烈不建议这么操作。分区数越多,风险越大。可以参考下面的操作安全的进行rename:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档