首页 > 解决方案 > Spark 的 StreamingQuery 的 Maven 依赖项

问题描述

我有一个编译时错误:

无法解析符号“火花”

对于以下代码:

import org.apache.spark.sql.streaming.StreamingQuery;

我使用 InteliJ。

pom.xml:

...
<dependencies>
        <dependency>
            <groupId>com.sparkjava</groupId>
            <artifactId>spark-core</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>2.4.0</version>
        </dependency>
    </dependencies>

编辑:

我注意到 Maven 抱怨 spark-sql 依赖:

在此处输入图像描述

标签: javamavenapache-spark

解决方案


我可以确认接口 org.apache.spark.sql.streaming.StreamingQuery 存在于 spark-sql_2.11:2.4.0 中,源代码在这里:https ://github.com/apache/spark/blob/v2 .4.0/sql/core/src/main/scala/org/apache/spark/sql/streaming/StreamingQuery.scala

我假设编译错误与源代码中的导入有关,而不是某种类型(您没有附上失败文件的源代码,所以我只能在这里推测)

所以,就分辨率而言:

  1. 尝试在没有 IntelliJ的情况下mvn clean compile 从命令行运行。如果成功 - 检查 intelliJ 集成(也许重新导入会解决问题)。

  2. 如果没有 - 检查pom.xml也许你<dependencyManagement>错误地更新了一个部分。

  3. 从本地 maven 存储库中删除 spark jar 并重试,有时 jar 可能会被下载损坏

更新1 既然现在我们知道mvn clean compile从命令行成功运行,这一定是在intelliJ中打开项目的问题。

所以我建议做以下事情:

  1. 关闭当前项目:文件 --> 关闭项目
  2. 文件 --> 打开... 现在找到项目文件夹并(这很重要)选择pom.xml. IntelliJ 将询问您是否要删除以前找到的项目文件 - 回答“是”,它将重新构建内部依赖关系数据结构。然后尝试运行程序并更新问题是否存在。

推荐阅读