现在有一个类似的需求,在cloudera环境中,是根据一个表的数据去更新另一个表的对应的行的某个字段。
如在hive中有:
表A(字段有一个,为id),对应数据为(1,2);
表B(字段有两个,分别为 id:label),对应数据为(1:N,2:N,3:N,4:N);
现在根据需求,需要将表B中id在表A中的数据更新。
更新后表B数据应为(1:Y,2:Y,3N,4:N)
现在已经有的实现是在hive中直接通过sql做修改,但是效率很低,想问下这类问题在大数据环境中有没有更好的解决方法(如通过其他工具,现在考虑将修改的操作移回ORACLE数据库做处理),或者在hive是否有方法能对这个更新操作的效率做优化。
现在在hive的sql为update A set label ='Y' where A.id in (select id from B);
希望大大提供下思路,谢谢了
不要用 a.id in (...)
改为
select
case when A.id is not null then 'Y' end
from B left outer join A on B.id = A.id
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。