我有一个非常简单的应用程序,试图使用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();
}
}
答案 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>