一.場景
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))