scala - SparkSQL 中使用 SQL 和不使用 SQL 的查询之间的差异

标签 scala apache-spark apache-spark-sql

在学习Scala Spark 2的过程中,我发现我们可以使用两种方式在SparkSQL中查询数据:

  1. spark.sql(SQL_STATEMENT) // variable "spark" is an instance of SparkSession
  2. DataSet/DataFrame.select/.where/.groupBy....

我的问题是它们之间的差异(功能、性能等)是什么? 我试图在网上或他们的文档中找到答案,但没有成功,所以我想听听您的意见

最佳答案

我认为使用SQL 查询和不使用SQL 查询的查询是等价的。两者都在内部,并且在内部使用相同的引擎。但我更喜欢没有 SQL 查询的用户,这些查询更容易编写并提供一定程度的类型安全。

其中

  1.  spark.sql(SQL_STATEMENT) // variable "spark" is a SparkSession
  2.  DataSet/DataFrame.select/.where/.groupBy....

在大多数情况下我会选择数字 2,因为它提供了一些类型安全级别

关于scala - SparkSQL 中使用 SQL 和不使用 SQL 的查询之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499245/

相关文章:

scala - 如果定义了选项,则用于在链中应用函数的惯用 Scala

apache-spark - Spark : converting GMT time stamps to Eastern taking daylight savings into account

hadoop - Spark Standalone 与 python 和 scala 的行为不同

scala - 是否可以在 Scala 的 ProcessBuilder 中使用 unix 通配符?

java - 将 Scala 编织到现有的 Java EE 项目中?

sql - 将日光节约时间字符串转换为时间戳会给出错误的结果

scala - SqlContext 不是包 org.apache.spark.sql 的成员

java - 使用 Spark SQL 连接 cassandra 中的两个表 - 错误 : missing EOF

scala - 读取 s3 存储桶时出错

scala - 如何从 UDF 创建自定义 Transformer?