访问 Spark.SQL
Posted
技术标签:
【中文标题】访问 Spark.SQL【英文标题】:Accessing 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 对象,但没有成功。
【问题讨论】:
【参考方案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,因此上述内容有所帮助。以上是关于访问 Spark.SQL的主要内容,如果未能解决你的问题,请参考以下文章
无法从 impala/hive/spark sql 访问“spark 注册表”
spark sql应该如何配置访问hive metastore? [复制]
在 HDP 的 spark2 sql 中无法访问 Hive 表