在删除内部配置单元时保留数据 table

preserve the data while dropping a hive internal table

我已经从 SQL 服务器加载了一个巨大的 table 到 Hive。我犯的错误是我在 HIVE 中将 table 创建为内部 table。任何人都可以建议任何 hack,以便我可以更改 table 结构,而不会丢失数据。 数据量太大了,又不能再导出数据了。

现在的问题是,由于列顺序与 SQL 服务器 table 不匹配,很多列显示 NULL。

任何帮助将不胜感激。

我没有发现在内部 table 上使用 Alter Table 有任何问题。 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTable/Partition/Column)

另一个(但不推荐)选项是打开您的配置单元元存储 (HCatalog) 并在那里应用更改。 Hive 从关系数据库中读取模式信息(在 Hadoop 设置期间配置,默认为 MySQL)。在这个 MySQL 中,您可以尝试更改一些设置。但是,不建议这样做,因为一旦出错,您可能会搞砸整个 Hive 数据库。

最安全的方法是创建一个新的 table 并使用现有的作为来源

create table new_table
as
select
[...]
from existing_table