使用spark sql在intelliJ上调用不相关的模糊方法错误

问题描述 投票:2回答:3

这个spark sql代码编译并运行但是intelliJ(idea-IU-172.4343.14)显示了“Ambigious方法调用”错误。

enter image description here

public static void main(String[] args) {

    SparkSession session = SparkSession //
            .builder() //
            .appName("idea-ambigious-method-call-bug") //
            .master("local[*]") //
            .getOrCreate();


    Dataset<String> cities = session//
            .sqlContext()//
            .createDataset(Arrays.asList("Paris", "Porto", "London"), Encoders.STRING());

    cities.filter(name -> name.startsWith("P")).show();
}

以前版本的intelliJ没有发生这种情况。

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
</dependencies>
java intellij-idea apache-spark-sql apache-spark-dataset
3个回答
3
投票

我认为这可以链接到scala插件。该插件使Spark的源代码可读,IntelliJ在选择正确的方法时失败。如果你从IntelliJ卸载插件,一切都应该工作正常。但是,您将无法获得可读的Spark源代码。


1
投票

删除Spark核心依赖项时,它运行正常。

尝试相同的代码与下面的Spark sql依赖。

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.2.0</version>
</dependency>


0
投票

我在IntelliJ IU-182上遇到了同样的问题(地图的多个实现),但是如果从终端运行相同的程序,则没有任何编译器问题。

    SparkSession session = SparkSession.builder().appName("ALB log Analyzer").master("local[2]").getOrCreate();
    Dataset<ALBLog> accessLogs = session.read().textFile(logFile).map(ALBLog::parseAlbLog,
            Encoders.bean(ALBLog.class));
© www.soinside.com 2019 - 2024. All rights reserved.