apache-flink错误java.lang.classnotfoundexception:org.apache.flink.table.sources.tablesource?

deyfvvtc  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(642)

我正在用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>

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

wqlqzqxt

wqlqzqxt1#

模块 flink-table 不是随flink二进制发行版一起提供的,因此默认情况下不会将其提供给集群。您可以将该依赖关系放到集群安装中(在 \lib 文件夹)请参阅安装程序的最后一节,或者您可以将您的作业作为uberjar提交,并打包该依赖项,请参阅此处。

67up9zun

67up9zun2#

我使用的是flink1.8.0版本,我也面临同样的问题。我可以通过在pom.xml中添加以下依赖项来修复它,方法是从系统路径指向flink-table2.12-1.8.0.jar。

<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>

希望对你有帮助。

相关问题