如何使用Spark SQL判断列值是否存在于另一列的列表中完成关联查询
你可以使用Spark SQL内置的array_contains函数实现数组包含判断,替换原来的IN语法即可,正确写法如下:
SELECT b.id, a.point FROM A a, B b WHERE array_contains(a.points_in_cluster, b.point)
更推荐使用规范的显式JOIN写法,避免隐式笛卡尔积带来的可读性问题:
SELECT b.id, a.point FROM B b JOIN A a ON array_contains(a.points_in_cluster, b.point)
array_contains是Spark SQL专门用于判断值是否存在于数组中的函数,第一个参数传入数组类型的字段,第二个参数传入待匹配的值,匹配成功返回布尔值true,即可满足筛选要求,执行后的输出和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者MetallicPriest
相关产品推荐
相关产品推荐

