Apache flink 我可以在Flink中ScalarFunction的open函数中初始化数据映射吗

Apache flink 我可以在Flink中ScalarFunction的open函数中初始化数据映射吗,apache-flink,flink-streaming,blink,Apache Flink,Flink Streaming,Blink,我实现了一个定制的ScalarFunction类,我想初始化一个hashmap,在open()函数中从数据库读取数据,但它总是卡在那里,所以像这样使用open()函数是正确的方法吗?以及open()函数将被调用多少次,一次或与eval()函数相同。 我的示例代码如下所示: public class GenNameUDF extends ScalarFunction { @Override public void open(FunctionContext context) thr

我实现了一个定制的ScalarFunction类,我想初始化一个hashmap,在open()函数中从数据库读取数据,但它总是卡在那里,所以像这样使用open()函数是正确的方法吗?以及open()函数将被调用多少次,一次或与eval()函数相同。 我的示例代码如下所示:

public class GenNameUDF extends ScalarFunction {

    @Override
    public void open(FunctionContext context) throws Exception {
        super.open(context);
        CommonClass.map = initMap();//here will read data from db

    }

    public String eval(String pubIp) {

         return todo();
    }
}
  • 如果数据库中的数据量很小,则只能使用广播访问数据库一次
  • 否则,您可以在open方法中构建连接,并在需要时访问db
  • -yt$文件也很有用