在spark中使用Hive上下文时出错:对象配置单元不是包org.apache.spark.sql的成员

时间:2014-10-29 17:42:07

标签: apache-spark apache-spark-sql

我正在尝试构建一个Hive Context,它继承自SQLContext。

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文档的一个示例。

谢谢

4 个答案:

答案 0 :(得分:15)

使用sbt:

您必须在依赖项中包含spark-hive。

为此,请在.sbt文件中添加以下行:

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

答案 1 :(得分:7)

由于hive的依赖关系,默认情况下它不会编译成spark二进制文件,你必须自己构建它。引自website

但是,由于Hive具有大量依赖项,因此它不包含在默认的Spark程序集中。要使用Hive,您必须先运行sbt/sbt -Phive assembly/assembly(或使用-Phive for maven)。

答案 2 :(得分:2)

这是maven依赖的示例

<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>

答案 3 :(得分:0)

对于Maven项目,在添加HIVE依赖项后,只需单击&#34;更新项目&#34;通过右键单击您的项目 - &gt; Maven - &gt;更新项目。这应该可以解决问题。