我正在尝试将多个DF一起加入。因为联接是如何工作的,所以我得到了重复的相同列名。


# Join Min and Max to S1
joinned_s1 = (minTime.join(maxTime, minTime["UserId"] == maxTime["UserId"]))

# Join S1 and sum to s2
joinned_s2 = (joinned_s1.join(sumTime, joinned_s1["UserId"] == sumTime["UserId"]))

我收到此错误:“”引用'UserId'不明确,可能是:UserId#1578,UserId#3014。“

成功加入后,从数据集中删除W的正确方法是什么?

最佳答案

您可以使用等值联接:

 minTime.join(maxTime, ["UserId"]).join(sumTime, ["UserId"])

别名:
minTime.alias("minTime").join(
    maxTime.alias("maxTime"),
    col("minTime.UserId") == col("maxTime.UserId")
)

或引用父表:
(minTime
  .join(maxTime, minTime["UserId"] == maxTime["UserId"])
  .join(sumTime, minTime["UserId"] == sumTime["UserId"]))

另外,您引用的是RDD文档,而不是DataFrame文档。这些是不同的数据结构,并且操作方式不同。

而且看起来您在这里做的事情很奇怪。假设您只有一个父表min,则maxsum可以作为没有join的简单聚合进行计算。

关于python - 多个连续加入pyspark,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38468568/

10-09 23:32