【问题标题】:Flink Error: java.lang.ClassNotFoundException: org.apache.flink.shaded.calcite.com.google.common.base.ThrowablesFlink 错误:java.lang.ClassNotFoundException:org.apache.flink.shaded.calcite.com.google.common.base.Throwables
【发布时间】:2016-12-21 12:12:53
【问题描述】:

我正在使用 Flink 流式传输 csv 文件中的数据。我想将其放入具有特定模式的表格格式。为此,我使用 Flink-table_2.10-1.1.3.jar (Table api) 但我收到了错误:

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

当我探索相应的 jar 时,相应的类出现在那里。你能告诉我为什么会这样吗?

我还可以获取 maven 源代码,以便在我的位置构建 Flink-table .jar?

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    我在使用 CEP 库时遇到了同样的问题。我添加到我的 pom 文件中,但我不断收到 ClassNotFoundException。我什至通过 IntelliJ 将它与我的 jar 文件打包,但没有用。

    1. 如果您使用他们的 flink-quickstart 原型,我认为 pom 文件中还有一些其他的东西需要更改以使其工作。当我创建了一个干净的项目并自己添加了 flink 依赖项时,我再也没有遇到那个异常了。您可以尝试看看这种方法是否有效。

    2. 您也可以将 flink-table JAR 文件添加到 Flink 中的lib 文件夹中。这也解决了我对 CEP 库的问题。 JAR 文件在 Maven 存储库网站中可用。下载你想要的版本。

    根据Flink官网Table and SQL文档:

    注意:Table API 目前不是二进制分发的一部分。 请参阅与它的链接以进行集群执行here

    【讨论】:

    • 你能把你的 pom 文件放在这里,以便我了解更改和依赖关系。
    • @kadsank 只需在 IntelliJ 上创建一个空的 Maven 项目,然后从 Flink 的下载页面复制依赖标签 flink.apache.org/downloads.html
    【解决方案2】:

    我在 flink v1.4.2 中的 Table api 也面临同样的问题。

    我将 opt 文件夹中的 flink-table_2.11-1.4.2.jar 文件添加到 lib 文件夹并重新启动了 flink。 这对我有用。希望对你也有用:)

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多