2017-04-13 89 views
0

我試圖將Apache flink傳輸的數據緩存到Apache Ignite緩存中。我也想運行使用用戶定義函數的查詢。根據Ignite,我在聲明緩存時使用cacheConf.setSqlFunctionClasses(GetCacheKey.class)設置。類聲明如下,Flink羣集中的Ignite用戶定義函數的ClassNotFound錯誤

public static class GetCacheKey implements Serializable{ 

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

}

當我與Apache弗林克本地運行的代碼,它的工作原理。但是當我去集羣執行Flink集羣中的代碼時,出現GetCacheKey類未找到的錯誤。這背後的原因是什麼?

回答

0

請檢查GetCacheKey.class是否在點燃節點類路徑。

0

Flink目錄必須在同一路徑下的每個工人上都可用。您可以使用共享NFS目錄,或將整個Flink目錄複製到每個工作節點。

還要確保Ignite庫存在於工作節點類路徑中。