首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个连续连接与火花放电

问多个连续连接与火花放电
EN

Stack Overflow用户
提问于 2016-07-19 21:08:51
回答 2查看 36.7K关注 0票数 11

我想把多个DF联系起来。因为join是如何工作的,所以我得到了相同的列名。

当调用类型为(K,V)和(K,W)的数据集时,返回(K,(V,W)对的数据集,其中包含每个键的所有元素对。

代码语言:javascript
复制
# 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的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-19 22:53:00

您可以使用:

代码语言:javascript
复制
 minTime.join(maxTime, ["UserId"]).join(sumTime, ["UserId"])

别名:

代码语言:javascript
复制
minTime.alias("minTime").join(
    maxTime.alias("maxTime"), 
    col("minTime.UserId") == col("maxTime.UserId")
)

或引用父表:

代码语言:javascript
复制
(minTime
  .join(maxTime, minTime["UserId"] == maxTime["UserId"])
  .join(sumTime, minTime["UserId"] == sumTime["UserId"]))

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

而且看起来你在做一些奇怪的事。假设您有一个父表min,则可以将max和sum计算为没有join的简单聚合。

票数 15
EN

Stack Overflow用户

发布于 2018-08-23 08:22:09

如果将两个数据帧连接到列上,那么这些列将被复制。因此,尝试使用数组或字符串连接两个或多个数据帧。

例如,如果在列上连接:

代码语言:javascript
复制
df = left.join(right, left.name == right.name)

输出将由两个带有"name“的列组成。

现在,如果您使用:

代码语言:javascript
复制
df = left.join(right, "name") OR df=left.join(right,["name"])

那么输出将不会有重复的列。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38468568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档