Flink Cluster中Ignite用户定义函数的ClassNotFound错误

时间:2017-04-13 15:09:33

标签: cluster-computing apache-flink ignite flink-streaming

我正在尝试将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类。这背后的原因是什么?

2 个答案:

答案 0 :(得分:0)

请检查GetCacheKey.class是否在点燃节点类路径中。

答案 1 :(得分:0)

Flink目录必须在同一路径下的每个worker上都可用。您可以使用共享NFS目录,也可以将整个Flink目录复制到每个工作节点。

还要确保Ignite库存在工作节点类路径中。