我有一张桌子
DEST_COUNTRY_NAME ORIGIN_COUNTRY_NAME count
United States Romania 15
United States Croatia 1
United States Ireland 344
我将以上内容转换为DataFrame
val flightData2015 = spark
.read
.option("inferSchema", "true")//infers the input schema automatically from data
.option("header", "true")//uses the first line as names of columns.
.csv("/data/flight-data/csv/2015-summary.csv");
使用DataFrame
函数只能从col
中获取一列
scala> data.col("count");
res70: org.apache.spark.sql.Column = count
但是我注意到没有为Column列出任何动作。我是否可以对Column
进行任何操作,例如max
,show
等
我尝试在max
列上运行count
函数,但仍然看不到任何结果。
scala> max(dataDS.col("count"));
res78: org.apache.spark.sql.Column = max(count)
如何在Column
上执行操作?
答案 0 :(得分:1)
没有任何动作。列不是分布式数据结构,并且未绑定到特定数据。
相反,列是要在Dataset
的特定上下文中进行评估的表达式,例如select
,filter
或agg
。
答案 1 :(得分:1)
在SparkSQL docs中,那些$"name"
事物也是Column
对象。
因此,您可以执行flightData2015.select($"count" > 1).show()
,并且只会得到两行。
如果要查找最大值,则需要以其他方式从DataFrame中选择它
类似这样的东西
// TODO: import sql functions
flightData2015.select(max($"count"))