首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Flink error java.lang.ClassNotFoundException: org.apache.flink.table.sources.TableSource?

Apache Flink error java.lang.ClassNotFoundException: org.apache.flink.table.sources.TableSource?
EN

Stack Overflow用户
提问于 2018-03-06 12:31:29
回答 2查看 4.3K关注 0票数 3

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

代码语言:javascript
复制
 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);

但它给出了以下错误:

代码语言:javascript
复制
Caused by: java.lang.ClassNotFoundException: org.apache.flink.table.sources.TableSource

下面是maven的依赖项:

代码语言:javascript
复制
        <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>

我可以看到上面类的源码定义,但我还是得到了这个错误。请帮帮忙?

EN

回答 2

Stack Overflow用户

发布于 2018-03-07 06:09:45

模块flink-table不随flink二进制版本一起提供,因此默认情况下不会提供给群集。您可以将该依赖项放到集群安装中(在\lib文件夹中),请参阅setup的最后一节,也可以将您的作业作为uber-jar提交,并打包该依赖项,请参阅here

票数 1
EN

Stack Overflow用户

发布于 2019-06-05 21:50:49

我使用的是Flink 1.8.0版本,我也面临着同样的问题。我可以通过从我的系统路径指向flink-table_2.12-1.8.0.jarpom.xml中添加下面的依赖项来修复它。

代码语言:javascript
复制
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table_2.12</artifactId>
            <version>1.8.0</version>
            <scope>system</scope>
            <systemPath>E:\flink-1.8.0-scala_2.12\opt\flink-table_2.12-1.8.0.jar</systemPath>
        </dependency>

希望能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49123420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档