Spark 测试用例不适用于 2.4.0 版本

Spark Test cases not working for 2.4.0 version

我们有一个使用 hadoop 3.1.3 和 spark 2.4 的应用程序。0.The Map-Reduce 推导是使用 Java 编写的。 Spark 数据集派生是使用 Java.The Map-Reduce 测试用例编写的,工作正常,但 spark junit 测试用例失败 正确创建了 spark 会话,同时使用 spark 会话加载示例 json 文件:

        Dataset<Row> input = sparkSession.read()
            .format("json")
            .option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
            .option("quote", "\"")
            .option("multiline", true)
            .load("src/test/resources/samples/abcd.json");

出现如下错误:

Exception in thread "dag-scheduler-event-loop" java.lang.NoSuchMethodError: org.apache.hadoop.mapreduce.InputSplit.getLocationInfo()[Lorg/apache/hadoop/mapred/SplitLocationInfo;
at org.apache.spark.rdd.NewHadoopRDD.getPreferredLocations(NewHadoopRDD.scala:310)

环境变量设置为:

HADOOP_HOME=c:\hadoop-2.7.1 JAVA_HOME=c:\openjdk1.8.0_271 SPARK_HOME=c:\spark-2.4.0-bin-hadoop2.7(since spark2.4 uses hadoop 2.7.1) 

我应该排除 spark 中的哪个 jar 或者我应该包含任何 hadoop jar?或任何其他检查步骤?

我找到了解决上述问题的方法。 还得引入下面的依赖

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>3.1.1.7.1.6.0-297</version>
    </dependency>