0
我正在使用Spark 1.5.2与Python3。我在pyspark有两个数据框。它们看起来像:如何部分更新火花数据帧(更新一些行)
old_df =
src | rank
------ | ------
a| 1
b| 1
c| 1
d| 1
e| 1
f| 1
g| 1
和
new_df =
src| rank
---|-----------------
a| 0.5
b|0.3333333333333333
c|1.6666666666666665
d| 1.5
现在我想在old_df
用新值在new_df
更新某些行。我的目标是产生一个新的数据帧,它看起来像:
src | rank
------ | ------
a| 0.5
b|0.3333333333333333
c|1.6666666666666665
d| 1.5
e| 1
f| 1
g| 1
,我想出了是先连接两个dataframes然后执行dropduplicates
的解决方案。
new_df = new_df.unionAll(old_df).dropDuplicates(['src'])
但是,让我失望,星火未执行“滴”的行动,这就造成了错误的数据帧时,保持第一的纪录。
是否有任何解决它的方法?或者以其他方式完成工作?
您的示例适用于我,您的解决方案出了什么问题? –
'dropduplicates'操作似乎随机丢弃重复的记录。这种行为似乎取决于Spark版本。我的解决方案适用于Spark 1.6.2,但在Spark 1.5.2上失败。 –