Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:将dataframe列复制到数组中并保留原始顺序_Scala_Apache Spark - Fatal编程技术网

Scala:将dataframe列复制到数组中并保留原始顺序

Scala:将dataframe列复制到数组中并保留原始顺序,scala,apache-spark,Scala,Apache Spark,假设我有一个dataframedf,其中有一个timestamp列和一个integer列,这样就没有时间戳出现在多个记录中。看起来是这样的: timestamp | value ------------------ 2019-07-03 | 2100 2019-04-15 | 1828 2019-06-01 | 948 2019-07-12 | 2912 [etc.] 使用以下方法,我可以按时间戳订购: df.createorReplaceView(“tmp”) var sql_cmd=“”

假设我有一个dataframe
df
,其中有一个timestamp列和一个integer列,这样就没有时间戳出现在多个记录中。看起来是这样的:

timestamp  | value
------------------
2019-07-03 | 2100
2019-04-15 | 1828
2019-06-01 | 948
2019-07-12 | 2912
[etc.]
使用以下方法,我可以按时间戳订购:

df.createorReplaceView(“tmp”)
var sql_cmd=“”选择
* 
从…起
tmp
订购人
时间戳asc”“;
var new_df=spark.sql(sql_命令);
然后以这种方式获得新的df:

timestamp  | value
------------------
2019-04-15 | 1828
2019-06-01 | 948
2019-07-03 | 2100
2019-07-12 | 2912
[etc.]

是否有方法将
new_df
value
的内容放入数组
new_df_数组
,以便保留该列数字的顺序?(即:
新的测向数组[0]==1828
新的测向数组[1]==948
等)

这应该可以做到:

val array = new_df.coalesce(1).sortWithinPartitions($"timestamp").collect()

请注意,这不是数据帧,而是一个普通的scala数组,一个简单的
collect()
不会改变数据帧中记录的顺序。@sachav感谢您的评论-那太棒了!您能给我指出一些文档,确保
collect()
不会影响数据帧中的顺序吗?虽然collect肯定会维持分区内的顺序,但我不确定分区本身的顺序是否会被保留。虽然我在文档中找不到任何引用,下面是一个有趣的答案: