2017-04-13 6 views
0

Apache flinkでストリーム配信されたデータをApache Igniteキャッシュにキャッシュしようとしています。私はまた、ユーザー定義関数を使用するクエリを実行したい。 Igniteによると、私はキャッシュを宣言中にcacheConf.setSqlFunctionClasses(GetCacheKey.class)設定を使用しています。私は、Apache FLINKでローカルでコードを実行すると、クラスの宣言は次のように、あるFlinkクラスタでIgnite User Defined関数のClassNotFoundエラーが発生しました

public static class GetCacheKey implements Serializable{ 

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

}

、それが動作します。しかし、私がFlink Clusterでコードをクラスタ実行すると、GetCacheKeyクラスが見つからないというエラーが出ました。この背後にある理由は何でしょうか?

答えて

0

GetCacheKey.classがignite nodes classpathsにあるかどうかを確認してください。

0

Flinkディレクトリは、同じパスのすべてのワーカーで使用できる必要があります。共有NFSディレクトリを使用することも、Flinkディレクトリ全体をすべてのワーカーノードにコピーすることもできます。

また、Igniteライブラリがワーカーノードのclasspathに存在することを確認してください。

関連する問題