从另一个配置单元表刷新一个配置单元表

wixjitnu  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(340)

我有一些配置单元表,我每小时使用sqoop增量导入从rdbms引入并暂存它们。我正在连接这些表并创建新的维度表。每当我将rdbms中的新行引入hive staging表时,我都必须刷新维度表。如果没有新行,则不应刷新dim表。我使用的配置单元版本没有acid功能。
需要一些关于如何在Hive中实现这一点的建议。

c9qzyr3d

c9qzyr3d1#

您可以像任何其他数据库一样,在现有配置单元表中插入新数据。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)

但有一个问题:每个插入都将创建一个新的hdfs文件,即使没有涉及任何记录。过多的碎片会随着时间的推移降低性能。
每周进行一次“压缩”作业会很有帮助(例如,重命名碎片表、重新创建表、从重命名的表插入覆盖、删除重命名的表)

相关问题