我正在尝试将增量数据从一个配置单元外部表加载到另一个配置单元表。我在源表上有一个日期时间戳字段,用于每天识别新添加的行。我的任务是提取新添加到源的行并将它们插入目标表。
我正在使用Hive 0.14。
我尝试了以下查询,但无法使其正常工作。
INSERT INTO TABLE TARGET PARTITION (FIELD_DATE)
SELECT A.FIELD1, A.FIELD2, A.FIELD3,
CASE WHEN LENGTH(A.FIELD4)=0 THEN 0 ELSE 1 END,
CASE WHEN LENGTH(A.FIELD5)=0 THEN 0 ELSE 1 END,
FROM SOURCE A, (Select max(FIELD_TIMESTAMP) from TARGET) T
where A.FIELD_TIMESTAMP > T.FIELD_TIMESTAMP;
以上代码需要花费数小时而不会产生任何结果。
我还尝试执行以下查询,后来发现HIVE不支持WHERE子句中的子查询。 (得到了ParseException)
INSERT INTO TABLE TARGET PARTITION (FIELD_DATE)
SELECT A.FIELD1, A.FIELD2, A.FIELD3,
CASE WHEN LENGTH(A.FIELD4)=0 THEN 0 ELSE 1 END,
CASE WHEN LENGTH(A.FIELD5)=0 THEN 0 ELSE 1 END,
FROM SOURCE A, TARGET T
where A.FIELD_TIMESTAMP > (Select max(FIELD_TIMESTAMP) from TARGET);
请帮助我选择仅在初次加载后添加的行。
谢谢。