我目前正在实现对HDFS和Hive表的监视数据的ETL(Talend)。我现在面临着重复的担忧。更详细地讲,如果我们需要使用相同的输入两次运行一个ETL作业两次,则最终在Hive表中将出现重复项。
在RDMS中解决此问题的方法是在发送数据之前存储输入文件名并存储为“ DELETE WHERE file name = ...”。但是Hive不是RDBMS,并且不支持删除。
我想就如何处理提出您的建议。我设想了两种解决方案:
如果您有其他解决方案,请随时提出。
最佳,奥兰多
我在回答自己。我找到了一个解决方案:我用(date,input_file_name)对表进行了分区(注意,我可以在Hive中使用SELECT INPUT__FILE__NAME来获得input_file_name。完成此操作后,在运行ETL之前,我可以向ALive发送ALTER TABLE DROP IF EXISTS EXISTS PARTITION(file_name = ...),以便如果此INPUT_FILE已经发送到ORC表,则删除包含输入数据的文件夹。
感谢大家的帮助。
奥兰多干杯
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句