如何从spark数据帧中检索任何内容。
我需要这样的东西,
df.where(“1”===“2”)
我需要这个,以便我可以与另一个数据帧进行左连接。 基本上我试图通过拆分null和非空键列并分别连接它们然后联合它们来加入两个数据帧时避免数据偏斜。
df1有300M条记录,其中200M条记录有Null密钥。 df2还有300M的记录。
所以要加入它们,我分别将包含null而不是null键的df1拆分,然后用df2连接它们。所以要使用df2加入null键数据帧,我不需要df2中的任何记录。
我可以将df2中的列添加到null键df1, 但很想知道我们是否在spark中有这样的东西
df.where(“1”===“2”)
正如我们在RDBMS SQL中所做的那样。
答案 0 :(得分:4)
有许多不同的方式,例如limit
:
df.limit(0)
Column
的位置:
import org.apache.spark.sql.functions._
df.where(lit(false))
String
表达式的位置:
df.where("false")
1 = 2
表示为
df.where("1 = 2")
或
df.where(lit(1) === lit(2))
也会起作用,但比需要的更冗长。
答案 1 :(得分:1)
where
函数调用filter
函数,因此您可以使用filter
作为
import org.apache.spark.sql.functions._
df.filter(lit(1) === lit(2))
或
import org.apache.spark.sql.functions._
df.filter(expr("1 = 2"))
或
df.filter("1 = 2")
或
df.filter("false")
或
import org.apache.spark.sql.functions._
df.filter(lit(false))
任何会在filter
函数中返回 false 的表达式都可以使用。