Spark Data框架什么都不选

时间:2018-05-30 23:42:12

标签: scala apache-spark dataframe

如何从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中所做的那样。

2 个答案:

答案 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 的表达式都可以使用