0
我想使用这些变量来选择两个变量值范围之间的条目。我的SQL查询是String sql = "Select count(*) FROM Records WHERE event_time <= UPPERTIME('1') AND event_time >= LOWERTIME('1')";
。在此查询UPPERTIME('1')
和LOWERTIME('1')
是UDF有定义Spark 2.1.1:如何将变量绑定到结构化流式查询
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”。
当我运行上面的查询时,它显示了表中所有条目的计数,但根据条件它应该显示与条目数相对应的计数落在给定范围内。出了什么问题?
谢谢@zsxwing,但我想与我的SQL查询绑定的变量不是只读的,而是我想在满足特定条件后通过某个常量值增加它们。 – kadsank
我不认为您可以在Spark工作期间广播您的更改。另外,你似乎假设处理数据的顺序?这通常是错误的。 – zsxwing