2014-10-29 24 views
9

我想構建一個Hive上下文,它從SQLContext繼承。在Spark中使用Hive上下文時出錯:對象配置單元不是包org.apache.spark.sql的成員

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 

我得到以下錯誤:

error: object hive is not a member of package org.apache.spark.sql 
     val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 

我可以清楚地從該行的事蜂房不存在自動完成看。 有關如何解決此問題的任何想法?這是來自sparkSQL文檔的一個例子。

謝謝

回答

7

由於蜂巢的依賴它默認是不編譯成二進制的火花,你必須建立它自己。引用自website

但是,由於Hive具有大量的依賴關係,因此它不包含在默認的Spark程序集中。爲了使用Hive,您必須首先運行sbt/sbt -Phive assembly/assembly(或使用Maven的-Phive)。

+0

感謝您的建議。 – user1189851 2014-10-29 18:39:11

+2

sbt/sbt -Phive程序集/程序集是什麼意思?我應該用什麼替換組件? – Lisa 2015-05-02 04:07:36

13

使用sbt:

您必須在您的依賴中包含spark-hive。

要做到這一點添加下面一行在你的名.bst文件:

libraryDependencies += "org.apache.spark" %% "spark-hive" % "1.5.0"

1

下面是一個例子行家依賴

<dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-hive_${scala.tools.version}</artifactId> 
     <version>${spark.version}</version> 
</dependency> 

---對於那些誰需要知道如何設置在POM中的屬性,下面是一個例子

<properties> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
     <encoding>UTF-8</encoding> 
     <scala.tools.version>2.10</scala.tools.version> 
     <scala.version>2.10.4</scala.version> 
     <spark.version>1.5.0</spark.version> 
</properties> 
0

對於Mave n項目中,添加HIVE依賴項後,只需右鍵單擊項目 - > Maven - >更新項目,即可單擊「更新項目」。這應該可以解決問題。

-1

嘗試使用:

hiveCtx = HiveContext(sc) 
hiveCtx.read.json("your_file") 

我的代碼是在 「巨蟒」

相關問題