Sql Scala:使用单调递增的\u id()时在数据帧中排序

Sql Scala:使用单调递增的\u id()时在数据帧中排序,sql,scala,apache-spark,Sql,Scala,Apache Spark,假设我有一个带有一个整数列的非常简单的数据帧df;看起来像这样 measured_value -------------- 1828 948 2912 2100 [etc.] 使用以下命令,我想添加一个单调递增的id并使用它: df.createorReplaceView(“tmp”) var sql\u cmd=“选择单调递增的\u id()作为计数器,*来自tmp”; var new_df=spark.sql(sql_命令); 因此,new_df的理想外观如下: counter | me

假设我有一个带有一个整数列的非常简单的数据帧
df
;看起来像这样

measured_value
--------------
1828
948
2912
2100
[etc.]
使用以下命令,我想添加一个单调递增的id并使用它:

df.createorReplaceView(“tmp”)
var sql\u cmd=“选择单调递增的\u id()作为计数器,*来自tmp”;
var new_df=spark.sql(sql_命令);
因此,
new_df
的理想外观如下:

counter | measured_value
------------------------
0       | 1828
1       | 948
2       | 2912
3       | 2100
[etc.]

但是,我不知道在使用SQL命令时,单列
的原始顺序是否从原始数据帧
df
测量了值。我可以确定Spark SQL不会这样做吗?或者,如果这样做了,我如何确保我可以添加一个
计数器
,使原始数据的顺序保持完整?

通常,在SQL中,表表示无序集,因此没有“原始数据的顺序”。您可以按表示该排序的列进行排序。我不知道SparkSQL是否扩展了SQL来定义表上的顺序,但考虑到它有时处理分布式表,如果它没有,我会感到惊讶。一般来说,在SQL中,表表示无序集,所以没有“原始数据的顺序”。您可以按表示该排序的列进行排序。我不知道SparkSQL是否扩展了SQL来定义表上的顺序,但考虑到它有时处理分布式表,如果它没有,我会感到惊讶。