java - Apache Flink 错误java.lang.ClassNotFoundException : org. apache.flink.table.sources.TableSource?

标签 java scala apache-flink flink-streaming flink-sql

我正在使用 Apache Flink 编写流媒体服务。我基本上是使用 org.apache.flink.table.sources.CsvTableSource 从 CSV 文件中选取数据。 下面是相同的代码:

 StreamTableEnvironment streamTableEnvironment = TableEnvironment
                .getTableEnvironment(streamExecutionEnvironment);

    CsvTableSource csvTableSource = CsvTableSource.builder().path(pathToCsvFile)
            .field("XXX0", Types.SQL_TIMESTAMP).field("XXX1", Types.INT)
            .field("XXX2", Types.DECIMAL).field("XXX3", Types.INT).field("XXX4", Types.INT)
            .field("XXX9", Types.DECIMAL).field("XXX5", Types.STRING)
            .field("XXX6", Types.STRING).field("XXX7", Types.STRING).fieldDelimiter(",").lineDelimiter("\n")
            .ignoreFirstLine().ignoreParseErrors().build();

    streamTableEnvironment.registerTableSource("metrics_table", csvTableSource);

    Table selectedMetricTable = streamTableEnvironment.sqlQuery(getSQLQuery(metricsType, metricsGroupingLevel));

    DataStream<Tuple2<Boolean, MetricsTimeSeriesData>> metricStream = streamTableEnvironment
            .toRetractStream(selectedMetricTable, MetricsTimeSeriesData.class);

但它给出了以下错误:

Caused by: java.lang.ClassNotFoundException: org.apache.flink.table.sources.TableSource

这里是maven依赖:

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.11</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_2.11</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table_2.11</artifactId>
            <version>1.4.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-scala_2.11</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-scala_2.11</artifactId>
            <version>1.4.0</version>
        </dependency>

我可以看到上面类的源定义,但我仍然收到这个错误。请帮忙?

最佳答案

模块 flink-table 没有随 flink 二进制发行版一起提供,因此默认情况下它没有提供给集群。您可以将该依赖项放入集群安装(在 \lib 文件夹中),请参阅 setup 的最后一部分或者您可以将您的工作作为 uber-jar 提交并打包该依赖项,请参阅 here .

关于java - Apache Flink 错误java.lang.ClassNotFoundException : org. apache.flink.table.sources.TableSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49123420/

相关文章:

java - mvn依赖:tree prompt invalid JAVA_HOME directory error

sql - 将数据帧添加到 Spark 中的列表

ADT 上的 Scala 模式匹配可能不会对无法访问的代码发出警告

java - Apache Flink 仪表板不显示指标

apache-flink - flink web ui 中的任务管理器 UI 中的 Outside JVM 是什么?

java - 按句点拆分字符串

c# - 锁定 .NET 与 Java 的成本

java - maven web项目在eclipse(tomcat 7)运行报错:error:Cannot invoke Tomcat manager: Software caused connection abort: socket write error

scala - 在 ScalaTest 中处理 double

scala - Flink SVM 90% 错误分类