df1 = spark.createDataFrame([(1,[4,2]),(4,[3,2])], [ "col2","col4"])
+----+------+
|col2| col4|
+----+------+
| 1 |[4, 2]|
| 4|[3, 2]|
+----+------+
df = spark.createDataFrame([("a",1,10), ("a",2,20), ("a",3,30),
("b",4,40),("b",5,40),("b",1,40)], ["col1", "col2", "col3"])
+----+----+----+
|col1|col2|col3|
+----+----+----+
| a| 1| 10|
| a| 2| 20|
| a| 3| 30|
| b| 4| 40|
| b| 5| 40|
| b| 1| 40|
+----+----+----+
基于col2连接df和df1,如果匹配,则通过col1检查col4是否在col2组中。我期待的输出,有人能告诉我如何自我加入pyspark(检查col4 isin col2 group by col1)。
预期产量
col1 col2 col3
a 1 10
2条答案
按热度按时间8i9zcol21#
您需要在这里使用数组\u contains,它根据匹配条件返回true或false
------你问题中的观察---------
基于给定的数据-一旦我们执行连接,它将不会给出预期的结果-
现在,如果您查看col2和col4中的值,您将看到post join在[4,2]中没有可用的1。因此,在创建
0ve6wy6x2#