我想使用变量来选择两个变量值范围之间的条目。我的 SQL 查询是String sql = "Select count(*) FROM Records WHERE event_time <= UPPERTIME('1') AND event_time >= LOWERTIME('1')";
. 在此查询中UPPERTIME('1')
,并且LOWERTIME('1')
是 UDF,并且定义是
spark.udf().register("LOWERTIME", new UDF1 < String, String > () {
@Override public String call(String lowertime) {
System.out.println("lowerTime="+lowerTime.toString());
return lowerTime.toString();
}
}, DataTypes.StringType);
spark.udf().register("UPPERTIME", new UDF1 < String, String > () {
@Override public String call(String uppertime) {
System.out.println("upperTime="+upperTime.toString());
return upperTime.toString();
}
}, DataTypes.StringType);
传递给 UDF 的参数是虚拟的,我实际上正在返回全局变量“upperTime 和 lowerTime”。
当我运行上述查询时,它会显示表中所有条目的计数,但根据条件,它应该显示对应于给定范围内的条目数的计数。出了什么问题?