0

我有 3 个数据框“u”、“join5”和站点。

这是数据框'u'的架构。

scala> println(u.printSchema)
root
 |-- split_sk: integer (nullable = true)
 |-- new_date: string (nullable = true)

现在创建 join6 并加入 'join5' 和 'site' 数据框。这是我的2个问题-

  • 以下查询中的 'u("split_sk")' 是什么?当查询中没有明确给出与“u”连接时,是否可以使用数据框“u”的列进行随机比较?

  • 在 scala 中,特别是在下面的查询中,什么 (<=>) 符号表示?

val join6 = join5.join(site, u("split_sk") <=> site("split_key") &&($"new_date" >= $"effective_dt") && ($"new_date" <=  $"expiry_dt"),"left")
4

1 回答 1

1

对于问题 1,

是的,“split_sk”是“u”中的列。这类似于 SQL a.column1 = b.column2,. 这是指定与上述相同的火花方式。

要回答另一个问题,是的,可以指定查询中不存在的数据框的某些列。最有可能的情况是 join5 数据框是在 join5 之上创建的

对于问题 2,

<=>称为 NULL SAFE 连接。请参阅此Spark SQL "<=>" 运算符

于 2019-11-04T09:58:06.470 回答