在 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 中可用但未显示在 Hive CLI 中的 HIVE 表