就像我们有SQL ISNUMERIC函数一样,该函数可以验证表达式是否为数字,我需要在Spark SQL中是否有任何等效函数,我试图找到它但无法获取。请问有人可以帮忙还是建议同样的事情?
答案 0 :(得分:1)
尝试使用spark udf,这种方法将帮助您克隆任何功能-
scala> spark.udf.register("IsNumeric", (inpColumn: Int) => BigInt(inpColumn).isInstanceOf[BigInt])
res46: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,BooleanType,Some(List(IntegerType)))
scala> spark.sql(s""" select "ABC", IsNumeric(123) as IsNumeric_1 """).show(false)
+---+-----------+
|ABC|IsNumeric_1|
+---+-----------+
|ABC|true |
+---+-----------+
scala> spark.sql(s""" select "ABC", IsNumeric("ABC") as IsNumeric_1 """).show(false)
+---+-----------+
|ABC|IsNumeric_1|
+---+-----------+
|ABC|null |
+---+-----------+
此处,如果列值不是整数,则上述函数将返回null。
希望这会有所帮助。