关于scala中spark数据帧用法的澄清
我有3个数据帧'u','join5'和site 这是数据帧“u”的模式关于scala中spark数据帧用法的澄清,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有3个数据帧'u','join5'和site 这是数据帧“u”的模式 scala> println(u.printSchema) root |-- split_sk: integer (nullable = true) |-- new_date: string (nullable = true) 现在通过连接“join5”和“site”数据帧创建join6。以下是我的两个问题- 以下查询中的“usplit_sk”是什么?当查询中未明确给出与“u”的联接时,是否可以使用数据帧“u”的
scala> println(u.printSchema)
root
|-- split_sk: integer (nullable = true)
|-- new_date: string (nullable = true)
现在通过连接“join5”和“site”数据帧创建join6。以下是我的两个问题-
以下查询中的“usplit_sk”是什么?当查询中未明确给出与“u”的联接时,是否可以使用数据帧“u”的列进行随机比较
在scala中,特别是在下面的查询中,什么符号表示to
关于问题1
是的,split_sk是u中的列。这类似于SQL,a.column1=b.column2。这是一种与上述相同的指定方式
要回答另一个问题,可以指定查询中不存在的数据帧的某个列。最有可能的情况是join5 dataframe是在join5之上创建的
关于问题2
称为空安全连接。
请参阅此谢谢。它在下面做什么?下面查询中的这个新的_日期是哪个数据帧的-u/join5/site?我希望它是有用的。val join6=join5.joinsite,usplit_sk site split_key和$new_date>=$effective_dt和$new_date更新了我的评论。它就像一个条件连接,就像split_sk等于split_key时的连接,其他关于日期的条件都满足,那么从哪个数据帧开始的日期和哪个数据帧?u/join5/site数据帧的新加入日期与哪个数据帧的生效日期?数据帧'u'在这两者之间跳来跳去,给我造成了混乱。然而,我认为日期的比较是在join5和SiteDataFrames之间进行的。请确认。为所有数据帧提供printSchema
val join6 = join5.join(site, u("split_sk") <=> site("split_key") &&($"new_date" >= $"effective_dt") && ($"new_date" <= $"expiry_dt"),"left")