Как изменить размер двух массивов / наборов данных, чтобы они были одинаковыми в Spark Scala? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть два массива / набор данных.

scala> data1.collect
res2: Array[Array[Double]] = Array(Array(1.0, 100.0), Array(0.7, 100.0), Array(0.8, 50.0))

scala> data2.collect
res3: Array[Array[Double]] = Array(Array(0.25, 0.0, 0.0), Array(1.0, 125.0, 0.0), Array(0.5, 0.0, 20.0), Array(0.5, 0.0, 15.0))

Я хочу, чтобы размеры data1 и data2 были одинаковыми (количество внутренних массивов должно быть одинаковым, в data1 число внутренних массивов равно 3, а в data2 это 4). Я хочу добавить Array(0.0, 0.0) или столько же Array(0.0, 0.0) в data1, сколько присутствует в data2.

Пожалуйста, скажите мне, как это сделать.

1 Ответ

0 голосов
/ 16 мая 2018

Сначала выясните, сколько новых строк нужно добавить в набор данных data1.Используя некоторые примеры данных из вопроса:

val data1 = Seq(Seq(1.0, 100.0), Seq(0.7, 100.0), Seq(0.8, 50.0))
  .toDF("col1").as[Array[Double]]
val data2 = Seq(Seq(0.8, 50.0), Seq(1.0, 125.0, 0.0), Seq(0.5, 0.0, 20.0), Seq(0.5, 0.0, 15.0))
  .toDF("col1").as[Array[Double]]

val diff = data2.count() - data1.count() 

В этом случае diff будет иметь значение 1.

Затем создайте новый набор данных с соответствующим количеством строк, содержащих толькоArray(0.0, 0.0) это должно быть добавлено.Затем добавьте этот новый набор данных к data1, используя union:

val appendData = Seq.fill(diff.toInt)(Array(0.0, 0.0)).toDF("col1").as[Array[Double]]
val data3 = data1.union(appendData)

Результат:

+------------+
|        col1|
+------------+
|[1.0, 100.0]|
|[0.7, 100.0]|
| [0.8, 50.0]|
|  [0.0, 0.0]|
+------------+
...