在删除内部配置单元时保留数据 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
我已经从 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