【发布时间】:2015-12-21 11:32:44
【问题描述】:
我正在尝试将增量数据从一个配置单元外部表加载到另一个配置单元表。我在源表上有一个日期时间戳字段,用于每天识别新添加的行。我的任务是提取新添加到源中的行并将它们插入到目标表中。
我正在使用 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);
请帮助我仅选择初始加载后添加的行。
谢谢。
【问题讨论】: