【问题标题】:Spark scala join dataframe within a dataframeSpark scala在数据框中加入数据框
【发布时间】:2020-03-18 08:05:12
【问题描述】:

我有一个要求,我需要连接数据框 A 和 B 并计算一列,并在具有不同连接条件的相同 2 个数据框之间的另一个连接中使用该计算值。

例如:

 DF_Combined = A_DF.join(B_DF,'Join-Condition',"left_outer").withColumn(col1,'value')

完成上述操作后,我需要进行相同的连接,但使用之前连接中计算的值。

 DF_Final=A_DF.join(B_DF,'New join COndition',"left_outer").withcolumn(col2,DF_Combined.col1*vol1*10)

当我尝试这样做时,我遇到了笛卡尔积问题。

【问题讨论】:

  • 真的不清楚你在问什么。你能用一些更具体的例子来扩展你的问题吗?表格中的几行示例数据(仅限相关列)可能会有所帮助,以及您想要达到的结果。

标签: scala apache-spark join apache-spark-sql


【解决方案1】:

您不能使用数据框中不存在的列。我的意思是当您在结果数据框中执行A_DF.join(B_DF,... 时,您只有来自A_DFB_DF 的列。如果您想拥有新列 - 您需要使用DF_Combined

根据您的问题,我相信您不需要再次加入,但您有 2 个可能的选择: 1.当你第一次加入时 - 在这个地方计算vol1*10。 2.加入后做DF_Combined.withColumn....

但请记住 - withColumn(name, expr) 使用 namesetting 值创建一个列,结果为 expr。所以.withcolumn(DF_Combined.col1,vol1*10) 没有意义。

【讨论】:

  • 我无法按要求进行加入。我会在一段时间内发布我的答案。不过感谢您的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多