spark sql中
单引号意味着要某个变量所代表的值
如
var q = 111
spark.sql(s"select '$q' as t").show()
+---+
| t|
+---+
|111|
+---+
去掉单引号
spark.sql(s"select $q as t").show()
+---+
| t|
+---+
|111|
+---+
两者在该情境下是一样的。
但是
在进行UDF传参时结果一定不一样!!!
如:
// 判断featName中元素是否在deleteBeginFeaStr和deleteEndFeaStr中,在返回false 不在返回true 是一个筛选函数
def DeleRelFea(feaName:String, deleteBeginFeaStr:String, deleteEndFeaStr:String):Boolean={
var feaArray = feaName.split("@")
!(deleteBeginFeaStr.split("-").contains(feaArray(0))||deleteEndFeaStr.split("-").contains(feaArray(1)))
}
spark.udf.register("DeleRelFea", DeleRelFea _)
DeleRelFea("3.0@7.9", "3.0-1.4","10.0-14.0")
结果:
DeleRelFea: