在 Spark CLI 中初始化 HiveContext

Initialising HiveContext in Spark CLI

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

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

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

sqlContext 是一个 HiveContext

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

[编辑]

在使用之前导入函数。

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

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

中了解到这一点

然而,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._。默认导入。

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

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