从另一个配置单元表刷新一个配置单元表
Posted
技术标签:
【中文标题】从另一个配置单元表刷新一个配置单元表【英文标题】:Refresh one hive table from another hive table 【发布时间】:2015-08-14 07:16:35 【问题描述】:我有几个 Hive 表,我使用 Sqoop 每小时增量导入从 RDBMS 中引入这些表,并将它们分阶段。我正在加入这些表并创建新的维度表。每当我将 RDBMS 中的新行引入 Hive 临时表时,我都必须刷新维度表。如果没有新行,则不应该刷新暗表。我使用的蜂巢版本没有 ACID 功能。
需要一些关于如何在 hive 中实现这一点的建议。
【问题讨论】:
您能否展示一些您正在使用的当前 HiveQL 语句的示例? 试试parttion
?
【参考方案1】:
您可以在现有 Hive 表中插入新数据,就像任何其他数据库一样。而且 Hive 还支持 WHERE NOT EXISTS 子句。
INSERT INTO TABLE MyDim
SELECT Id, Blah1, Blah2
FROM MySource s
WHERE NOT EXISTS
(SELECT 1 FROM MyDim z WHERE z.Id =s.Id)
但有一个问题:每个 INSERT 都会创建一个新的 HDFS 文件,即使涉及的记录为零。随着时间的推移,过多的碎片会降低性能。
每周“压缩”作业会很有帮助(例如,重命名碎片表、重新创建表、从重命名的表中插入覆盖、删除重命名)
【讨论】:
以上是关于从另一个配置单元表刷新一个配置单元表的主要内容,如果未能解决你的问题,请参考以下文章