2016-12-20 2 views
0

스트리밍 테이블 API 쿼리가있어서 table.writetoSink(sink) 메서드를 사용하여 Table.csv 파일에 씁니다.Flink : Table API 쿼리를 실행할 때 NoClassDefFoundError

프로그램을 실행할 때 다음 오류가 발생합니다.

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/commons/compiler/CompileException 
at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:580) 
at org.apache.flink.api.table.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:102) 
at org.apache.flink.api.table.BatchTableEnvironment.sql(BatchTableEnvironment.scala:132) 
at table_streaming_test.main(table_streaming_test.java:59) 
Caused by: java.lang.ClassNotFoundException: org.codehaus.commons.compiler.CompileException 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 4 more 

또한 프로젝트에 commons-compiler.jar 파일이 포함되어 있습니다.

답변

0

Flink의 테이블 및 SQL API는 commons-compiler에 따라 org.codehaus.janino에 의존하는 Apache Calcite에서 빌드됩니다.

오류 메시지는 commons-compiler 종속성이 응용 프로그램에 포함되어 있지 않음을 나타냅니다. 하나의 접근법은 응용 프로그램의 모든 종속성을 포함하는 팻 (fat jar)을 빌드하는 것입니다. Flink의 빠른 시작 Maven architypes (JavaScala)는 이에 대한 청사진을 제공합니다. 또 다른 방법은 Flink 설정의 ./lib 폴더에 필요한 모든 의존성을 추가하는 것입니다.

+0

감사합니다. Fabian, 내 프로젝트에 commons-compiler jar를 포함 시켰지만 다음 오류로 이어집니다. – kadsank

+0

'예외 "main"java.lang.IllegalStateException : Java 컴파일러를 인스턴스화 할 수 없습니다. "원인 : java. lang.ClassNotFoundException : org.codehaus.commons.compiler의 어떠한 구현은 클래스 경로 org.codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory에서 \t (CompilerFactoryFactory.java:58)에없는 org.apache.calcite.rel에서 \t .metadata.JaninoRelMetadataProvider.compile (JaninoRelMetadataProvider.java:415)' – kadsank

+0

아마도 여러분의 버전은 Calcite가 기대하는 버전과 호환되지 않을 수 있습니다. 그러나 전이 의존성을 명시 적으로 포함 할 필요는 없습니다. 'flink-table'을 포함하고 모든 의존성을 지닌 팻 단지를 만드는 것만으로 충분합니다. –

관련 문제