语句之间的 Spark SQL

Posted

技术标签:

【中文标题】语句之间的 Spark SQL【英文标题】:Spark SQL between statement 【发布时间】:2019-03-17 12:33:31 【问题描述】:

如何查询某个范围内的工资?这是我的 Spark SQL 数据框代码,用于查找 10000 到 20000 之间的薪水:

empData.where($"Salary" > 10000 && $"Salary" < 20000).orderBy($"Salary".desc).show()

我相信应该有使用between 的替代解决方案。如何使用between 方法?

【问题讨论】:

【参考方案1】:

我相信有替代解决方案可以在两者之间使用。

就这样:

empData.where($"Salary".between(10000, 20000))

【讨论】:

实际上这有点不正确,因为 'between' 函数包含在内:spark.apache.org/docs/latest/api/scala/… spark.apache.org/docs/latest/api/scala/org/apache/spark/sql/…【参考方案2】:

如果您希望使用 between,您可以使用 sparkSQL 并将逻辑作为查询运行。例如

empData.createOrReplaceTempView("empDataTempTable")

val filteredData = spark.sql("select * from empDataTempTable where salary between 10000 and 20000 order by salary desc")

 filteredData.show()

对于列和过滤过程中的随机查找,sparkSQL 和 DataFrame 提供几乎相同的性能结果。

【讨论】:

【参考方案3】:
empData.filter(col("Salary").between(10000 ,20000)).orderBy(col("Salary").desc());

empData.where(col("Salary").between(10000 ,20000)).orderBy(col("Salary").desc());

【讨论】:

以上是关于语句之间的 Spark SQL的主要内容,如果未能解决你的问题,请参考以下文章

测试 Spark SQL 语句的解析

我们可以使用 spark-sql 或 apache spark 运行 sqoop 导入语句吗

Spark SQL:INSERT INTO 语句语法

使用 Spark SQL 的 Cassandra 简单插入语句因 org.apache.spark.sql.catalyst.parser.ParseException 而失败

spark 怎么通过写sql语句一行一行读数据

Spark SQL - 使用 SQL 语句使用 JDBC 加载数据,而不是表名