这个问题对我来说很难解决。
我需要为每个组合的变量“key”计算变量“val”的匹配项数,数据库如下:
+----------+----------------+
| key | val |
+----------+----------------+
| k1| v1 |
| k1| v2 |
| k2| v1 |
| k2| v3 |
| k3| v1 |
| k3| v2 |
| k3| v3 |
| k4| v3 |
| k4| v5 |
+----------+----------------+
所需输出为
+----------+----------------+
| keys | count |
+----------+----------------+
| [k1,k2]| 1 |
| [k1,k3]| 2 |
| [k2,k1]| 1 |
| [k2,k3]| 2 |
| [k2,k4]| 1 |
| [k3,k1]| 2 |
| [k3,k2]| 2 |
| [k3,k4]| 1 |
| [k4,k2]| 1 |
| [k4,k3]| 1 |
+----------+----------------+
我的想法是一种groupby和应用一个复杂的函数,返回所需的,但是,我不知道怎么做,我会感谢任何建议,帮助我找到方法。
2条答案
按热度按时间eoigrqb61#
你可以用
left join on val
用相同的Dataframe(df)来实现你想要的输出。以下是spark sql的等效答案:
ru9i0ody2#
使用
val
,将密钥收集到一个数组中,然后按密钥数组分组并计数。