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

时间:2015-08-14 07:16:36

标签: hadoop hive hiveql

我有几个Hive表,我每小时使用Sqoop增量导入从RDBMS引入并暂存它们。我正在加入这些表并创建新的维度表。每当我从RDBMS将新行引入Hive登台表时,我都必须刷新维度表。如果没有新行,则不应该刷新暗淡表。我使用的配置单元版本没有ACID功能。

需要一些关于如何在蜂巢中实现这一目标的建议。

1 个答案:

答案 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,重命名后删除)