2016-12-21 6 views
0

Я использую Flink для потоковой передачи данных, хранящихся в файле csv. Я хочу поместить его в формат таблицы с определенной схемой. Для этого я использую Flink-table_2.10-1.1.3.jar (таблица АНП), но я получил ошибку:Ошибка Flink: java.lang.ClassNotFoundException: org.apache.flink.shaded.calcite.com.google.common.base.Throwables

log4j:WARN No appenders could be found for logger (org.apache.flink.api.java.typeutils.TypeExtractor). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/shaded/calcite/com/google/common/base/Throwables 
    at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.create(JaninoRelMetadataProvider.java:450) 
    at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.revise(JaninoRelMetadataProvider.java:460) 
    at org.apache.calcite.rel.metadata.RelMetadataQuery.revise(RelMetadataQuery.java:186) 
    at org.apache.calcite.rel.metadata.RelMetadataQuery.collations(RelMetadataQuery.java:484) 
    at org.apache.calcite.rel.metadata.RelMdCollation.project(RelMdCollation.java:207) 
    at org.apache.calcite.rel.logical.LogicalProject$1.get(LogicalProject.java:122) 
    at org.apache.calcite.rel.logical.LogicalProject$1.get(LogicalProject.java:120) 
    at org.apache.calcite.plan.RelTraitSet.replaceIfs(RelTraitSet.java:238) 
    at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:116) 
    at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:108) 
    at org.apache.flink.api.table.plan.logical.Project.construct(operators.scala:90) 
    at org.apache.flink.api.table.plan.logical.Project.construct(operators.scala:85) 
    at org.apache.flink.api.table.plan.logical.LogicalNode.toRelNode(LogicalNode.scala:78) 
    at org.apache.flink.api.table.Table.getRelNode(table.scala:66) 
    at org.apache.flink.api.table.StreamTableEnvironment.translate(StreamTableEnvironment.scala:243) 
    at org.apache.flink.api.java.table.StreamTableEnvironment.toDataStream(StreamTableEnvironment.scala:147) 
    at table_streaming_test.main(table_streaming_test.java:90) 
Caused by: java.lang.ClassNotFoundException: org.apache.flink.shaded.calcite.com.google.common.base.Throwables 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 17 more 

Когда я исследую соответствующий сосуд, соответствующий класс присутствует там. Не могли бы вы рассказать, почему это происходит?

Также я могу получить источник maven, чтобы я мог построить Flink-table .jar у себя дома?

ответ

0

У меня была такая же проблема с библиотекой CEP. Я добавил в мой файл pom, но я продолжал получать ClassNotFoundException. Я даже упаковал его с помощью jar-файла через IntelliJ, но не работал.

  1. Если вы используете их Flink-QUICKSTART архетип, я думаю, что есть некоторые другие вещи, чтобы изменить в файле п, чтобы сделать его работу. Когда я создал чистый проект и добавил зависимости от flink, я больше не получал этого исключения. Вы можете попробовать и посмотреть, работает ли этот подход.

  2. Вы также можете добавить файл JAR-файла flink-table в папку lib в Flink. это также устранило мою проблему с библиотекой CEP. файл JAR доступен на веб-сайте репозитория Maven. загрузите нужную версию.

Согласно Table and SQL документа на сайте FLiNK:

Note: The Table API is currently not part of the binary distribution. See linking with it for cluster execution here .

+0

Можете ли вы поместить файл POM здесь, так что я получить представление об изменениях и зависимостях. – kadsank

+0

@kadsank Просто создайте пустой проект Maven на IntelliJ и скопируйте теги зависимостей с страницы загрузки Flink http://flink.apache.org/downloads.html –