gpt4 book ai didi

java - 使用 Spark/Java 的 isin() 函数

转载 作者:行者123 更新时间:2023-12-01 14:31:48 25 4
gpt4 key购买 nike

我有以下两个数据框。

dataframe1
┌────────────┬─────────────┬──────────────┐
│idZones │Longitude │latitude |
├────────────┼─────────────┼──────────────┤
|[50,30,10] |-7.073781666 |33.826661 |
└────────────┴─────────────┴──────────────┘
dataframe2
┌────────────┬─────────────┬──────────────┐
│id │col1 │col2 │
├────────────┼─────────────┼──────────────┤
│10 │aaaaaaaaaaaa │bb32 │
│90 │ppp │cc20 │
└────────────┴─────────────┴──────────────┘

我想要以下输出

┌────────────┬─────────────┬──────────────┐
│id │col1 |col2 │
├────────────┼─────────────┼──────────────┤
│10 │aaaaaaaaaaaa │bb32 │
└────────────┴─────────────┴──────────────┘

我使用下面的代码

 dataframe1.join(dataframe2,dataframe2.col("id").isin(dataframe1.col("idZones")));

注意 idZones 列是一个数组[int]

我收到这个错误

cannot resolve '(`id` IN (dataframe1.`idZones`))' due to data type mismatch: Arguments must be same type but were: int != array<int>;;

我需要你的帮助

谢谢

最佳答案

尝试将 isin 替换为 array_contains

dataframe1.join(dataframe2, expr("array_contains(idZones, id)"))

(固定代码,感谢@Shantanu Kher)

另一种方法,您可以直接分解 dataframe1.col("idZones"),然后进行连接。

关于java - 使用 Spark/Java 的 isin() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62802707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com