【问题标题】:Accessing Spark.SQL访问 Spark.SQL
【发布时间】:2017-02-28 23:06:46
【问题描述】:

我是 Spark 的新手。按照书中的以下示例,我发现下面的命令给出了错误。什么是运行 Spark-SQL 命令的最佳方式,同时在 Spark 中进行一般编码?

scala> // Use SQL to create another DataFrame containing the account
summary records
scala> val acSummary = spark.sql("SELECT accNo, sum(tranAmount) as TransTotal FROM trans GROUP BY accNo")
<console>:37: error: not found: value spark

我尝试导入 import org.apache.spark.SparkContext 或使用 sc 对象,但没有成功。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    假设你在 spark-shell 中,那么首先获取一个 sql 上下文:

    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    

    那么你可以这样做:

    val acSummary = sqlContext.sql("SELECT accNo, sum(tranAmount) as TransTotal FROM trans GROUP BY accNo")
    

    【讨论】:

    • 谢谢,Phasmid。您的提示帮助我追踪了问题。
    • 大多数相对较新的 shell 版本都带有为您构建的 sqlContext
    【解决方案2】:

    所以spark-shell 中可用的值spark 实际上是SparkSession (https://spark.apache.org/docs/2.0.2/api/scala/index.html#org.apache.spark.sql.SparkSession) 的一个实例

    val spark = SparkSession.builder().getOrCreate()
    

    会给你一个。

    【讨论】:

    • 感谢您的帮助,triggerNZ。
    【解决方案3】:

    你用的是什么版本?看来您在 shell 中,这应该可以工作,但只能在 Spark 2+ 中使用 - 否则您必须使用 sqlContext.sql

    【讨论】:

    • 谢谢,贾斯汀。我正在使用 Spark 1.6,因此上述内容有所帮助。
    猜你喜欢
    • 2021-06-07
    • 2019-01-19
    • 2020-01-03
    • 2021-06-14
    • 2018-07-02
    • 2022-06-27
    • 2022-01-10
    • 2020-09-03
    • 1970-01-01
    相关资源
    最近更新 更多