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

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

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

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

【问题讨论】:

    标签: scala apache-spark hive command-line-interface apache-spark-sql


    【解决方案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 /_/
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-13
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-19
        • 1970-01-01
        相关资源
        最近更新 更多