在 Spark CLI 中初始化 HiveContext

Posted

技术标签:

【中文标题】在 Spark CLI 中初始化 HiveContext【英文标题】:Initialising HiveContext in Spark CLI 【发布时间】:2016-07-04 06:42:21 【问题描述】:

在命令行界面初始化Spark时,默认SparkContext初始化为sc,SQLContext初始化为sqlContext。

但我需要 HiveContext,因为我使用的是函数 collect_list,SparkContext 不支持,但 HiveContext 支持。由于 HiveContext 是 SparkContext 的超类,它应该可以工作,但事实并非如此。

如何使用 Spark CLI 在 Scala 中初始化 HiveContext

【问题讨论】:

【参考方案1】:

您可以按照以下步骤进行操作:

import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
val depts = sqlContext.sql("select * from departments")`

【讨论】:

【参考方案2】:

在 spark-shell 中,sqlContext 默认是 HiveContext 的一个实例。您可以在我之前的回答 here 中了解这一点。

不过,collect_list 在 spark 1.5.2 中不可用。它是在 spark 1.6 中引入的,所以你可以找到它是正常的。

参考:https://github.com/apache/spark/blob/v1.6.2/sql/core/src/main/scala/org/apache/spark/sql/functions.scala#L213

您也不需要在 shell 中导入 org.apache.spark.sql.functions._。默认导入。

【讨论】:

【参考方案3】:

sqlContext 是一个 HiveContext

scala> sqlContext
res11: org.apache.spark.sql.SQLContext = org.apache.spark.sql.hive.HiveContext@4756c8f3

[编辑]

使用前导入函数。

import org.apache.spark.sql.functions._ 

【讨论】:

error: not found: value collect_list 这是我使用 collect_list 功能后控制台所说的 你导入正确了吗?导入 org.apache.spark.functions._ scala> import org.apache.spark.functions._ <console>:31: error: object functions is not a member of package org.apache.spark import org.apache.spark.functions._ ^ 我该如何解决这个问题?请帮忙 @indian_authority 你有哪个版本的 spark ? @elisah ` ____ __ / / ___ _____/ /__ _\ \/ _ \/ _ / __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 1.5.2 /_/

以上是关于在 Spark CLI 中初始化 HiveContext的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL on HIVE

spark cli

SPARK 中可用但未显示在 Hive CLI 中的 HIVE 表

来自 CLI 的 scala/spark 脚本

无法在 Spark SQL 中查看 Hive 记录,但可以在 Hive CLI 上查看它们

Spark-SQL CLI:未调用 SupportsPushDownFilters.pushFilters