我的DataFrame df
有一列充当与df
多对一的表的外键。对于外键的每一个独特的价值,它含有其它外键,但只有一次,与遍布在该组中值是空的:PySpark DataFrame reduce_by
df.filter(df.foreignkey1 == "12345").select("foreignkey1", "foreignkey2").show()
+-----------+-----------+
|foreignkey1|foreignkey2|
+-----------+-----------+
| 12345| |
| 12345| |
| 12345| |
| 12345| 100002020|
| 12345| |
+-----------+-----------+
在这里,我选择的所有条目,其中foreignkey1
是12345,而在他们旁边显示foreignkey2
的值。
我想倒塌下来到这一点:
+-----------+-----------+
|foreignkey1|foreignkey2|
+-----------+-----------+
| 12345| 100002020|
+-----------+-----------+
从理论上讲,应该只有一个foreignkey2
每foreignkey1
独特的价值,尽管这部分正在测试。
我对Spark相当陌生,这似乎是一个问问别人的好地方,以确保我遵循“Spark思考”。任何帮助将非常感激。是我最好的选择df.rdd.reduceByKey
还是有一些更智能的方式来使用groupby和聚合函数做到这一点?谢谢 !
只是想:我很可能只是'dropna()',看看是否是长于唯一值的数量'foreignkey1'。但是,这并不能保证每个'foreignkey1'都有一个'foreignkey2' - 尽管它可能强烈地表明它。 – Quentin