2017-07-17 79 views
3

我有一個非常簡單的應用程序,它試圖使用spark從/ src/main/resources中讀取一個orc文件。我不斷收到此錯誤:enableHiveSupport在java中引發錯誤代碼

Unable to instantiate SparkSession with Hive support because Hive classes are not found.

我曾嘗試加入依賴

<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

您可以暫時離開NetBeans IDE,構建包(使用'sbt package'或類似的方法)和'spark-submit'嗎?看起來像Netbeans IDE不是Spark的問題。 –

回答

1

如果您在IDE正在運行,我建議你SparkSession對象使用.master("local")

接下來很重要的一點是,火花蜂巢版本應與火花內核和火花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> 
+0

非常感謝你!添加.master(「本地」)做了詭計! –

+0

@ M.Uk很高興看到您的問題得到解決。 :)如果答案對你有幫助,你也可以加註。 –