【问题标题】:What's the difference between spark-shell and spark-sql? Any performance differences?spark-shell 和 spark-sql 有什么区别?任何性能差异?
【发布时间】:2017-09-28 14:32:13
【问题描述】:

Spark-shell: 基本上会打开scala> 提示符。查询需要按以下方式写的地方

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
// Queries are expressed in HiveQL
sqlContext.sql("FROM src SELECT key, value").collect().foreach(println)

spark-sql:这似乎直接连接到 hive 元存储,我们可以用与 hive 类似的方式编写查询。并查询 hive 中的现有数据

我想知道这两者之间的区别。在 spark-sql 中处理任何查询是否与在 spark-shell 中相同?我的意思是我们可以在 spark-sql 中利用 spark 的性能优势吗?

Spark 1.5.2 在这里。

【问题讨论】:

  • 嗯,spark-shell 只是一个外壳。另一方面,spark-sql 是一个库。比较它们就像比较苹果和西红柿。顺便说一句,spark-shell 会自动导入不同的 spark 库并实例化 sqlContext 所以你不需要这行 val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

标签: apache-spark apache-spark-sql


【解决方案1】:

spark-shell 为您提供了一个工作 Spark 环境,其中 Scala 是(编程)语言。

spark-sql 为您提供了一个以 SQL 为查询语言的 Spark SQL 环境。

请注意,spark-shell 适用于 Spark 中可用的任何 API,而 spark-sql 仅适用于 Spark SQL API(带有数据集和数据帧)。

它们只是针对具有不同技能的用户的不同界面(spark-shell 用于 Spark/Scala 开发人员,spark-sql 用于 SQL 开发人员)。

spark-sql 将 Spark 基础架构“隐藏”在 SQL 接口后面,这使得人们应该具备多少工程技能,但最终会使用 Spark SQL(以及一般的 Spark)中可用的所有优化。

在性能方面 spark-sqlspark-shell 是相似的。

【讨论】:

  • 谢谢...我在 sparksql 中注意到的另一件事是,如果我厌倦了加入两个 1100 万条记录表,它很快就会出现内存不足错误..所以无论如何可以控制 sparkSql 中的内存选项
  • 当然。毕竟它是一个 Spark 应用程序,所以通用属性在这里适用 --> spark.apache.org/docs/latest/configuration.html
  • @JacekLaskowski 我们可以将 spark-sql 连接到 pyspark/spark-shell 并将表作为数据框导入吗?
  • @etl_devs 不确定我理解。如果您找不到任何类似的问题,您能否就 SO 提出一个单独的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 2016-05-27
  • 2014-12-30
  • 2017-04-05
相关资源
最近更新 更多