以零停机时间替换 Hive 表中的数据

Posted

技术标签:

【中文标题】以零停机时间替换 Hive 表中的数据【英文标题】:replace data in hive table with zero downtime 【发布时间】:2018-01-02 23:00:38 【问题描述】:

我定期接收制表符分隔的数据并将其加载到配置单元表中。

当我得到一个新数据集时,我需要一种方法来重新加载表,并且停机时间为零。这行不通:

drop table t;
load data local inpath ... into table t;   // table is down while loading

【问题讨论】:

【参考方案1】:

你可能需要一个临时表,有大量的解决方案可用,这可能很有趣

https://dba.stackexchange.com/questions/141530/when-you-switch-table-a-to-table-b-does-the-index-data-get-switched-as-well

您也可以考虑使用视图在两个在线表格之间切换 所以表 t 将变为:

平板电脑翻转

表 TFlop

view VT --Select * from TFlip

加载数据时可以

load data local inpath ... into table TFlop;   // view remain up while loading

最后

alter view VT as Select * from TFlop GO

在下一次加载中,您将通过加载到表 TFlip 然后更新视图以指向 TFlip 来执行相反操作

【讨论】:

我对 hive 不熟悉,所以这不是完整的解决方案,只是解决您的问题的一种潜在方法(顺便说一下我更新了 alter view 脚本)

以上是关于以零停机时间替换 Hive 表中的数据的主要内容,如果未能解决你的问题,请参考以下文章

替换Hive表中所有列的字符

如何删除单元格 Hive 表中的重复值

如何替换 hive 列中的特殊字符?

HIVE和HADOOP的一些东西

hive怎样取出字段包含的所有特殊字符

替换 hive 中的列