首页 > 解决方案 > 加入 PySpark 会产生意想不到的结果

问题描述

我通过加入使用以下代码创建的 UNIQUE_ID 创建了 Spark 数据框:

ddf_A.join(ddf_B, ddf_A.UNIQUE_ID_A == ddf_B.UNIQUE_ID_B, how = 'inner').limit(5).toPandas()

使用以下UNIQUE_ID (dtype = 'int')代码在初始数据帧中创建:

row_number().over(Window.orderBy(lit(1))

ddf_A 和 ddf_B 都是通过使用带有两个附加表的内部连接作为初始数据帧的子集创建的。UNIQUE_ID 已通过分别使用别名 UNIQUE_ID_A 和 UNIQUE_ID_B 在两个数据帧中重命名。

ddf_A 和 ddf_B 之间的内连接的结果(5 行)如下所示:

|----|------------------|-------------------|
|    |    UNIQUE_ID_A   |    UNIQUE_ID_B    |
|----|------------------|-------------------|
|  0 |         451123   |         451123    |
|  1 |         451149   |         451149    |
|  2 |         451159   |         451159    |
|  3 |         451345   |         451345    |
|  4 |         451487   |         451487    |
|----|------------------|-------------------|

乍一看,这对我来说是可以接受的。但是,我无法使用以下代码在 ddf_A 中找到 451123:

ddf_A.filter(col('UNIQUE_ID_A') == 451123).show()

你知道这里有什么问题吗?

标签: apache-sparkjoinpysparkrow-number

解决方案


推荐阅读