需要等效于Spark SQL中的SQL IsNumeric函数

时间:2019-06-23 18:03:40

标签: apache-spark-sql

就像我们有SQL ISNUMERIC函数一样,该函数可以验证表达式是否为数字,我需要在Spark SQL中是否有任何等效函数,我试图找到它但无法获取。请问有人可以帮忙还是建议同样的事情?

1 个答案:

答案 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。

希望这会有所帮助。