我无法在spark中实现简单的sql查询。
我想用scala spark编写以下查询:
select * from emp where emp_id in (select distinct manager_id from emp ;
下面是我尝试的:
empdf.where(col("emp_id").isin(empdf.select("manager_id").collect().map(_(0)).toList)).show()
我得到以下错误:
java.lang.runtimeexception:不支持的文本类型类scala.collection.immutable.$colon$colon list(null、68319、68319、68319、65646、65646、69062、66928、66928、66928、67858、66928、67832)
2条答案
按热度按时间k97glaaz1#
最好执行半联接以避免收集为列表:
如果你想用
isin
,可以使用: _*
(见此帖):或使用
isInCollection
:osh3o9ms2#
你也可以用sql写,
empdf.createorreplaceview(“emp”)
sql(“select*from emp where emp\u id in(select distinct manager\u id from emp”)