无法识别Intellij平台中spark上的Java数据帧

无法识别Intellij平台中spark上的Java数据帧,java,apache-spark,Java,Apache Spark,我是Spark的新手,我尝试使用Spark库中包含的DataFrame库操作一些数据 在执行此任务时,我遇到了一个错误,表明我的IDE无法解析符号DataFrame。我在互联网上搜索了相关问题,并遵循他们推荐的解决方案,但结果并没有解决我的问题 下面是我的代码,错误抛出无法解析符号数据帧 import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.s

我是Spark的新手,我尝试使用Spark库中包含的DataFrame库操作一些数据

在执行此任务时,我遇到了一个错误,表明我的IDE无法解析符号
DataFrame
。我在互联网上搜索了相关问题,并遵循他们推荐的解决方案,但结果并没有解决我的问题

下面是我的代码,错误抛出
无法解析符号数据帧

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SQLContext;


public class Test {
    public static void main(String[] args) throws Exception{
        String inputFile = args[0];
        String outputFile = args[1];
        SparkConf conf = new SparkConf().setAppName("Data Transformation")
                .set("spark.serializer","org.apache.spark.serializer.KryoSerializer")
                .setMaster("local[*]");

        JavaSparkContext sc = new JavaSparkContext(conf);

        SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);

        //below statement throw error in the DataFrame declaration.
        DataFrame df = sqlContext.read().json("examples/src/main/resources/people.json");

        sc.stop();
        sc.close();
    }
}
我的pom.xml如下所示

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bistel</groupId>
    <artifactId>demo-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10 -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>2.0.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>2.0.1</version>
        </dependency>
    </dependencies>
</project>

4.0.0
com.bistel
演示专家
1.0-快照
org.apache.spark
spark-sql_2.10
2.0.1
org.apache.spark
spark-core_2.10
2.0.1

虽然我指定了所有相关库(如spark core和spark sql),但我不知道为什么会出现此错误。我在Scala语言上解决了相同的问题,但在Java上无法解决。

您缺少Dataframe的导入:

import org.apache.spark.sql.DataFrame

问题是版本问题。问题是我使用的spark库的版本。2.0.1版本不提供数据帧。我将我的版本降级到1.6.0,并且我能够包含import org.apache.spark.sql.DataFrame

下面是我的新pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bistel</groupId>
    <artifactId>demo-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.11 -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>

    </dependencies>
</project>

4.0.0
com.bistel
演示专家
1.0-快照
org.apache.spark
spark-core_2.10
1.6.0
org.apache.spark
spark-sql_2.10
1.6.0

与特定问题无关,您使用spark 2.0.1和旧语义有什么原因吗?您似乎正在使用spark上下文和sql上下文而不是spark会话,并且您正在使用scala 2.10而不是2.11的工件,因为我对spark非常陌生,我对spark平台中包含的众多版本感到非常困惑。特别是,我不知道不同平台(spark、scala..)的哪些版本可以兼容以更好地使用它们。如果您能为我提供spark和scala版本的使用指导,或者让我知道任何有关spark版本的网站,我将不胜感激。pom中的版本(在您的情况下为2.0.1)就是spark版本。一般来说,spark版本2.X.X有很多变化(实际上可能会破坏为1.6.X编写的一些代码)。如果可能的话,您应该使用spark 2版本,因为所有新功能都是针对该版本的。特别是spark 2.X.X不保证与spark 1.X.X兼容。scala版本在工件id(_2.10或_2.11)中定义。由于这两个scala版本不兼容,您必须确保您使用的所有东西都与兼容版本兼容。我建议对spark 2.X.X使用2.11(默认值)。@AssafMendelson Greats。我明白了,问题是版本问题。问题是我使用的spark库的版本。2.0.1版本不提供数据帧。我将我的版本降级到1.6.0,并且我能够包含
import org.apache.spark.sql.DataFrame
。谢谢。2.1.0提供了数据帧。它的定义与1.6中的定义不同。在1.6中,DataFrame是一个完整类。在2.1(或2.0.1)中,它是Dataset[Row]的别名。当我在google Spark 2.1 DataFrame中搜索时,这个注释不是第一个出现的结果,这是怎么回事?