Ins*_*nct 37 scala dataframe apache-spark apache-spark-sql
我想选择一个等于某个值的列.我在scala中做这个并且有点麻烦.
继承我的代码
df.select(df("state")==="TX").show()
Run Code Online (Sandbox Code Playgroud)
这将返回状态列,其中包含布尔值而不仅仅是TX
我也试过了
df.select(df("state")=="TX").show()
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.
小智 61
我遇到了同样的问题,以下语法对我有用:
df.filter(df("state")==="TX").show()
Run Code Online (Sandbox Code Playgroud)
我正在使用Spark 1.6.
Jeg*_*gan 21
还有另一个简单的sql选项.使用Spark 1.6下面也应该可以工作.
df.filter("state = 'TX'")
Run Code Online (Sandbox Code Playgroud)
这是一种指定类似过滤器的sql的新方法.有关支持的运算符的完整列表,请查看此类.
Jus*_*ony 14
您应该使用where,select是一个返回语句输出的投影,因此您获得布尔值的原因.where是一个保留数据帧结构的过滤器,但只保留过滤器工作的数据.
但是,根据文档,您可以用3种不同的方式编写它
// The following are equivalent:
peopleDf.filter($"age" > 15)
peopleDf.where($"age" > 15)
peopleDf($"age" > 15)
Run Code Online (Sandbox Code Playgroud)
小智 9
为了得到否定,这样做......
df.filter(not( ..expression.. ))
Run Code Online (Sandbox Code Playgroud)
例如
df.filter(not($"state" === "TX"))
Run Code Online (Sandbox Code Playgroud)
df.filter($"state" like "T%%") 用于模式匹配
df.filter($"state" === "TX") 或df.filter("state = 'TX'")平等
小智 5
我们可以在 Dataframe 中编写多个 Filter/where 条件。
例如:
table1_df
.filter($"Col_1_name" === "buddy") // check for equal to string
.filter($"Col_2_name" === "A")
.filter(not($"Col_2_name".contains(" .sql"))) // filter a string which is not relevent
.filter("Col_2_name is not null") // no null filter
.take(5).foreach(println)
Run Code Online (Sandbox Code Playgroud)
小智 5
在 Spark V2.* 上工作
import sqlContext.implicits._
df.filter($"state" === "TX")
Run Code Online (Sandbox Code Playgroud)
如果需要与变量(例如,var)进行比较:
import sqlContext.implicits._
df.filter($"state" === var)
Run Code Online (Sandbox Code Playgroud)
笔记 :
import sqlContext.implicits._