flink集群中ignite用户定义函数的classnotfound错误

sbtkgmzw  于 2021-06-25  发布在  Flink
关注(0)|答案(2)|浏览(333)

我正在尝试将apache flink流式传输的数据缓存到apache ignite缓存中。我还想运行使用用户定义函数的查询。根据ignite,我正在使用 cacheConf.setSqlFunctionClasses(GetCacheKey.class) 声明缓存时设置。类声明如下:,

public static class GetCacheKey implements Serializable{

   @QuerySqlFunction
    public static long getCacheKey(int mac, long local) {            
        long key=(local << 5) + mac; 
        return key;
    }

}
当我用apache flink在本地运行代码时,它是有效的。但是当我在flink cluster中执行集群代码时,我得到了一个错误 GetCacheKey 找不到类。这背后的原因是什么?

iezvtpos

iezvtpos1#

请检查getcachekey.class是否在ignite nodes类路径中。

hgqdbh6s

hgqdbh6s2#

flink目录必须在同一路径下的每个worker上可用。您可以使用共享的nfs目录,或者将整个flink目录复制到每个工作节点。
还要确保ignite lib存在于worker节点类路径中。

相关问题