在spark cli中初始化hivecontext

pwuypxnk  于 2021-06-29  发布在  Hive
关注(0)|答案(3)|浏览(502)

在命令行界面中初始化spark时,默认情况下sparkcontext初始化为sc,sqlcontext初始化为sqlcontext。
但是我需要hivecontext,因为我正在使用一个函数 collect_list sparkcontext不支持,但hivecontext支持。既然hivecontext是sparkcontext的一个超类,那么它应该可以工作,但事实并非如此。
如何使用spark cli在scala中初始化hivecontext?

jljoyd4f

jljoyd4f1#

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

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

r1zk6ea12#

在sparkshell中,默认情况下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
你也不需要导入 org.apache.spark.sql.functions._ 在贝壳里。默认情况下导入。

dojqjjoe

dojqjjoe3#

sqlcontext是hivecontext

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

[编辑]
在使用之前导入函数。

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

相关问题