enableHiveSupport在java spark代码中抛出错误

时间:2017-07-17 21:04:51

标签: java maven hadoop apache-spark

我有一个非常简单的应用程序,试图使用spark从/ src / main / resources读取一个orc文件。我一直收到这个错误:

  

无法使用Hive支持实例化SparkSession,因为找不到Hive类。

我尝试添加依赖

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.0.0</version>
</dependency>

按照此处的建议:Unable to instantiate SparkSession with Hive support because Hive classes are not found

然而,无论我添加什么,我仍然会收到此错误。

我通过NetBeans IDE在本地Windows机器上运行它。

我的代码:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.*;

public class Main {

    public static void main(String[] args) {
        SparkSession spark = SparkSession
                .builder()
                .enableHiveSupport()
                .appName("Java Spark SQL basic example")
                .getOrCreate();

        Dataset<Row> df = spark.read().orc("/src/main/resources/testdir");        
        spark.close();
    }
}

1 个答案:

答案 0 :(得分:1)

如果您在IDE中投放,我建议您在.master("local")对象中使用SparkSession

下一个要点是spark-hive的版本应该与spark-core和spark-sql版本匹配。为了安全起见,您可以将依赖关系定义为

<properties>
    <spark.version>2.0.0</spark.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.11</artifactId>
        <version>${spark.version}</version>
    </dependency>