首页 > 解决方案 > PySpark中同一张表交叉连接后如何访问字段

问题描述

我在一张桌子上运行了一个交叉连接,它工作得很好。现在的问题是我不知道如何从结果数据帧中处理相同的字段。

df = spark.sql("select p1.id, p2.id from profile p1 CROSS JOIN profile p2 WHERE p1.id < p2.id")

当我打印出第一行时,我得到了这样的东西:

Row(id=21398968, id=76109821)

运行 "print(res_2[0]['id'])" 只产生第一个作为标量值(不是列表)

标签: pysparkapache-spark-sql

解决方案


您可以将查询更改为:

df = spark.sql("select p1.id AS p1_id, p2.id AS p2_id from profile CROSS JOIN profile p2 WHERE p1.id < p2.id")

通过使用AS,您应该能够避免名称冲突。


推荐阅读