Apache spark Spark 1.4:Spark SQL任何和所有函数
我正在从事一个使用Spark SQL 1.4的项目。该版本似乎不支持任何和所有功能 因此,可以为这些函数编写一个Apache spark Spark 1.4:Spark SQL任何和所有函数,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我正在从事一个使用Spark SQL 1.4的项目。该版本似乎不支持任何和所有功能 因此,可以为这些函数编写一个udf,或者我们是否有其他解决方法 谢谢,像这样的东西应该可以做到: 导入scala.reflect.ClassTag 导入org.apache.spark.sql.Column 类型BinColOp=(列,列)=>Column def检查[T](f:BINCLOP)( coln:Column,pred:(Column,T)=>Column,xs:Seq[T])={ map(other
udf
,或者我们是否有其他解决方法
谢谢,像这样的东西应该可以做到:
导入scala.reflect.ClassTag
导入org.apache.spark.sql.Column
类型BinColOp=(列,列)=>Column
def检查[T](f:BINCLOP)(
coln:Column,pred:(Column,T)=>Column,xs:Seq[T])={
map(other=>pred(col,other)).reduce(f)
}
val all=检查[列](&&&)_
val any=检查[列](124; | 124;)_
用法示例:
val df=sc.parallelize(
(1L,“foo”,3.6)::
(2L,“bar”,-1.0)::
无
).toDF(“v”、“x”、“y”)
df.选择(全部($“v”,\>\,顺序(点亮(-1),点亮(1)))。显示
// +---------------------+
//|((v>-1)和&(v>1))|
// +---------------------+
//|假|
//|对|
// +---------------------+
df.选择(任意($“x”,_!==,Seq(lit(“foo”),lit(“baz”))).show
// +--------------------------------+
//|(非(x=foo)|非(x=baz))|
// +--------------------------------+
//|对|
//|对|
// +--------------------------------+
df.select(全部($“x”)、!==x、Seq(亮的(“foo”)、亮的(“baz”)).show
// +--------------------------------+
//|(非(x=foo)和&非(x=baz))|
// +--------------------------------+
//|假|
//|对|
// +--------------------------------+