Apache spark SparkSQL不是';t在窗口规范中正确排序
我正在分布式模式下运行spark,在窗口设置方面遇到了一些问题。让我们看看我的数据框架中的一个具体案例:Apache spark SparkSQL不是';t在窗口规范中正确排序,apache-spark,apache-spark-sql,sql-order-by,window-functions,Apache Spark,Apache Spark Sql,Sql Order By,Window Functions,我正在分布式模式下运行spark,在窗口设置方面遇到了一些问题。让我们看看我的数据框架中的一个具体案例: df.where($"client_id" === 221689).orderBy($"sequence_num".asc).show +---------+------------+-----+ |client_id|sequence_num|state| +---------+------------+-----+ | 221689| 6417377|REPBI| |
df.where($"client_id" === 221689).orderBy($"sequence_num".asc).show
+---------+------------+-----+
|client_id|sequence_num|state|
+---------+------------+-----+
| 221689| 6417377|REPBI|
| 221689| 6417378|DESBL|
| 221689| 6417379|REPOS|
| 221689| 920002|SUSUN|
| 221689| 920003|BLOQU|
| 221689| 920004|SUSBI|
| 221689| 920005| BAJA|
+---------+------------+-----+
很明显,订购工作不正常。应用窗口时,会应用相同的错误顺序:
val client_window = Window.partitionBy($"client_id").orderBy($"sequence_num").rowsBetween(Long.MinValue, Long.MaxValue)
df.withColumn("last_state", last($"state") over client_window).where($"client_id" === 221689).show
+---------+------------+-----+----------+
|client_id|sequence_num|state|last_state|
+---------+------------+-----+----------+
| 221689| 6417377|REPBI| BAJA|
| 221689| 6417378|DESBL| BAJA|
| 221689| 6417379|REPOS| BAJA|
| 221689| 920002|SUSUN| BAJA|
| 221689| 920003|BLOQU| BAJA|
| 221689| 920004|SUSBI| BAJA|
| 221689| 920005| BAJA| BAJA|
+---------+------------+-----+----------+
last_state
的值应为REPOS
,与最新序列号的状态相同,但正在计算的BAJA
不正确
我正在HDP2.6.1集群中使用Spark 1.6.3。序列号列可能是字符串类型。先把它投给数字-对不起,我的坏。。。。它与
sequence\u num
一起工作得很好。