12

我正在尝试构建一个继承自 SQLContext 的 Hive 上下文。

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)

我可以从自动补全中清楚地看到 hive 不存在。关于如何解决这个问题的任何想法?这是可用 sparkSQL 文档中的一个示例。

谢谢

4

4 回答 4

20

使用 sbt:

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

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

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

于 2015-10-07T16:05:33.580 回答
7

由于 hive 的依赖关系,默认情况下它不会编译到 spark 二进制文件中,您必须自己构建它。从网站引用

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

于 2014-10-29T18:05:18.573 回答
3

这是一个示例 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>
于 2016-03-23T17:46:55.950 回答
0

对于 Maven 项目,添加 HIVE 依赖项后,只需单击“更新项目”,方法是右键单击您的项目 -> Maven -> 更新项目。这应该可以解决问题。

于 2016-09-14T13:39:11.657 回答