在我的Flink项目中,我找不到连接器的某些库(特别是我需要一次摄入CSV并以批处理或流模式读取几tb的拼花数据)。我想我有所有需要的软件包,但我仍然收到:
[ERROR] import org.apache.flink.connector.file.src.FileSource
[ERROR] ^
[ERROR] C:Usersaliasproject...MyFlinkJob.scala:46: error: not found: type FileSource
我的POM.xml相当大,但我认为我有相关的导入:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-parquet</artifactId>
<version>1.15.2</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-filesystem_${scala.binary.version}</artifactId>
<version>1.11.6</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-hadoop-bulk_2.12</artifactId>
<version>1.14.6</version>
</dependency>
我使用以下版本:
<scala.version>2.12.16</scala.version>
<scala.binary.version>2.12</scala.binary.version>
<log4j.version>2.17.1</log4j.version>
<flink.version>1.15.1</flink.version>
我需要一个与Java不同的导入路径吗?
我希望Flink文档在示例代码片段中有导入,因为我花了很长时间试图弄清楚导入。推荐的._
导入是什么?
我已经查看了包中的符号,但没有找到FileSystem。我寻找不同的教程和示例项目,展示如何阅读/听拼花和CSV文件与Flink。我通过这种方式取得了一些进展,但是我在Scala(不是Java)中发现的几个使用Parquet文件作为源文件的例子中,即使在添加了它们的依赖并运行mvn clean install
之后,导入仍然不能工作。
我尝试使用GitHub的高级搜索来查找使用FileSource的公共Scala项目,并最终找到了一个具有以下依赖项的项目:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-files</artifactId>
<version>${project.version}</version>
</dependency>
这个包在index.scala-lang.org
上丢失了,我认为我应该寻找依赖关系(这是我的第一个Scala项目,所以我认为这是在Python中找到像PyPi这样的包的地方)。MVN Repository似乎是一个更好的地方。
Flink 1.15有一个无Scala的类路径,这导致许多Flink工件不再具有Scala后缀。你可以在专门的Flink博客上阅读关于这个主题的所有内容:https://flink.apache.org/2022/02/22/scala-free.html
你也可以在博客中看到如何使用Flink的任何Scala版本,而不是仅限于Scala 2.12.6。TL;DR:您应该在应用程序中使用Java api。Scala api也将从Flink 1.17开始弃用。
最后但并非最不重要的:不要混合&匹配Flink版本。那不行。