Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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 Spark中的数组中_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

将数据帧列的值放入Scala Spark中的数组中

将数据帧列的值放入Scala Spark中的数组中,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有数据帧 val df1 = sc.parallelize(List( ("A1",45, "5", 1, 90), ("A2",60, "1", 1, 120), ("A3", 45, "9", 1, 450), ("A4", 26, "7", 1, 333) )).toDF("CID","

我有数据帧

val df1 = sc.parallelize(List(
  ("A1",45, "5", 1, 90),
  ("A2",60, "1", 1, 120),
  ("A3", 45, "9", 1, 450),
  ("A4", 26, "7", 1, 333)
)).toDF("CID","age", "children", "marketplace_id","value")
现在,我希望列“子项”的所有值按相同顺序放入一个单独的数组中

下面的代码适用于只有一个分区的较小数据集

val list1 = df.select("children").map(r => r(0).asInstanceOf[String]).collect()
输出:

list1: Array[String] = Array(5, 1, 9, 7)
list: Array[String] = Array(9, 1, 7, 5)
但是当我们有分区时,上面的代码会失败

val partitioned = df.repartition($"CID")
val list = partitioned.select("children").map(r => r(0).asInstanceOf[String]).collect()
输出:

list1: Array[String] = Array(5, 1, 9, 7)
list: Array[String] = Array(9, 1, 7, 5)

有没有一种方法可以在不改变顺序的情况下将一列的所有值放入一个数组?

这是不确定的,因为它取决于数据分区和任务调度。@dumitru所以我们无法实现这一点?您可以尝试添加
单调递增的\u id()
列和按该列重新分区后排序这是不确定的,因为它取决于数据分区和任务调度。@dumitru所以我们无法实现这一点?您可以尝试添加
单调递增的\u id()
列和按该列重新分区后排序