Apache spark SparkSQL不是';t在窗口规范中正确排序

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| |

我正在分布式模式下运行spark,在窗口设置方面遇到了一些问题。让我们看看我的数据框架中的一个具体案例:

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
一起工作得很好。