语句之间的 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 或 apache spark 运行 sqoop 导入语句吗
使用 Spark SQL 的 Cassandra 简单插入语句因 org.apache.spark.sql.catalyst.parser.ParseException 而失败