我有几个Hive表,我每小时使用Sqoop增量导入从RDBMS引入并暂存它们。我正在加入这些表并创建新的维度表。每当我从RDBMS将新行引入Hive登台表时,我都必须刷新维度表。如果没有新行,则不应该刷新暗淡表。我使用的配置单元版本没有ACID功能。
需要一些关于如何在蜂巢中实现这一目标的建议。
答案 0 :(得分:0)
您可以像在任何其他数据库中那样在现有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文件,即使涉及的记录为零。碎片过多会降低性能。
每周"压实" job会有所帮助(例如重命名碎片表,重新创建表,从重命名的表中插入OVERWRITE,重命名后删除)