hive中in与not in

mac2024-10-07  64

在mysql中想表达包含与不包含可以用 in/exists,但是在hive1的版本中是不支持这种语法的,hive2支持这种语法但是效率极低,这里给出一种解决方案。

建表与导入数据

create table if not exists parent(parent_id int,pname string,comments string) row format delimited fields terminated by "\t"; load data local inpath "/home/hadoop/hive_data/parent.txt" into table parent;

数据

parent_id pname comments

1 Dan so what 2 Jack who cares 3 Rose yeah right

建表与导入数据

parent_id person_id cname comments

create table if not exists children(parent_id int,person_id int,cname string,comments string) row format delimited fields terminated by "\t"; load data local inpath "/home/hadoop/hive_data/children.txt" into table children;

数据

1 2 annne who cares 1 1 julia yeah right 2 1 marcella so what 4 3 alice yeah right

例1:找出父母资料在表中的孩子的名字

in查询方式

select cname from children a left outer join parent b on a.parent_id=b.parent_id where b.comments is not null;

查询结果

cname annne julia marcella

例2:找出父母资料不在表中的孩子的名字

not in查询方式

select cname from children a left outer join parent b on a.parent_id=b.parent_id where b.comments is null;

查询结果

cname alice
最新回复(0)