一.场景
1 val jldxx_zxzq = jldxx_with_dddf 2 .withColumn("ZXZQ", zxzq(col("CBZQ"))) 3 .filter(row => row.getAs("ZXZQ")!= "") // 过滤掉异常数据 4 // 如果存在,过滤掉抄表日期不在当前执行周期内的数据 5 .filter(row => row.getAs("CBRQ") >= row.getAs("ZXZQ").split("_")(0) && 6 row.getAs("CBRQ") <= row.getAs("ZXZQ").split("_")(1))
二.异常信息
三.原因
是因为使用getAs函数获取某列的数据时没有指明具体的类型,导致无法判断是否支持"<="或 ">="这类的运算符,因而会报错!
三.解决方案
使用getAs时指明具体的类型!
代码如下:
1 val jldxx_zxzq = jldxx_with_dddf 2 .withColumn("ZXZQ", zxzq(col("CBZQ"))) 3 .filter(row => row.getAs("ZXZQ")!= "") // 过滤掉异常数据 4 // 如果存在,过滤掉抄表日期不在当前执行周期内的数据 5 .filter(row => row.getAs[String]("CBRQ") >= row.getAs[String]("ZXZQ").split("_")(0) && 6 row.getAs[String]("CBRQ") <= row.getAs[String]("ZXZQ").split("_")(1))