我正在开发一个批处理作业,将数据从HDFS文件加载到Hive表中。数据流如下
如果在第1步中输入目录中有一个文件供外部表读取,则此流程工作良好。如果没有文件,则外部表将为空,因此执行步骤2将清空最终表。如果外部表为空,则希望将现有数据保留在最后一个表中(上次执行过程中加载的数据)。
是否有一个我可以设置的hive属性,只有当我们用一些数据覆盖它时,才能覆盖最后一个表?
我知道我可以使用HDFS命令检查输入文件是否存在,并有条件地启动Hive请求。但是我想知道我是否能在蜂巢中直接实现同样的行为,这将帮助我避免这种额外的验证。
发布于 2017-11-26 23:34:38
尝试向表中添加虚拟分区,例如LOAD_TAG并使用动态分区加载:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE your_table PARTITION(LOAD_TAG)
select
col1,
...
colN,
'dummy_value' as LOAD_TAG
from source_table;
在您的情况下,分区值应该始终是相同的。
https://stackoverflow.com/questions/47451261
复制相似问题