2017-04-13 6 views
0

Apache flink에서 스트리밍 된 데이터를 Apache Ignite 캐시에 캐시하려고합니다. 또한 사용자 정의 함수를 사용하는 쿼리를 실행하고 싶습니다. Ignite 당 캐시를 선언하는 동안 cacheConf.setSqlFunctionClasses(GetCacheKey.class) 설정을 사용하고 있습니다. 제가 아파치 FLINK와 로컬 코드를 실행하면 클래스 선언은 다음과 같이이다Flink 클러스터에서 Ignite User Defined Function에 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가 노드 점화 클래스 경로에 있는지 확인하십시오.

0

Flink 디렉토리는 동일한 경로에있는 모든 작업자가 사용할 수 있어야합니다. 공유 NFS 디렉토리를 사용하거나 전체 Flink 디렉토리를 모든 작업자 노드에 복사 할 수 있습니다.

또한 작업자 노드 classpath에 Ignite 라이브러리가 있는지 확인하십시오.