Spark Dataframe имеет дублированные значения во всех строках при добавлении столбца со случайным двойным - PullRequest
2 голосов
/ 26 апреля 2019

Я пытаюсь добавить новый столбец в фрейм данных. Новый столбец содержит случайное двойное значение. Проблема заключается в дублировании значений в новом столбце для всех строк в DataFrame. Я использую класс scala.util.Random для генерации.

Я попытался просто добавить новый столбец в dataframe, как это было рекомендовано в аналогичных постах. Я попытался изменить DataFrame на набор данных и добавить столбец. Есть рабочий метод - собирать данные о драйвере и добавлять в список кортежей новый элемент, содержащий случайные числа типа double, но это плохое решение для больших объемов данных, поэтому я не могу использовать это решение.

Spark версии 2.2.0, я использовал spark-shell для реализации

List(("a", 1), ("b", 2), ("c", 3))
.toDF("str", "digit")
.withColumn("random", lit(scala.util.Random.nextDouble))
.show(10)

Вот результаты https://i.imgur.com/ziBTbQ9.png

1 Ответ

2 голосов
/ 26 апреля 2019

Чтобы создать случайные двойные значения вместо использования withColumn, укажите scala.util.Random в своем списке.

Пример:

val rnd_df=List(("1",9,Some(scala.util.Random.nextDouble)),
                ("1",9,Some(scala.util.Random.nextDouble)))
          .toDF("str","digit","random")
rnd_df.show(false)

Result:

+---+-----+------------------+
|str|digit|random            |
+---+-----+------------------+
|1  |9    |0.7370861605665576|
|1  |9    |0.5691922799783725|
+---+-----+------------------+

ОБНОВЛЕНИЕ:

Использование rand() inwithColumn функция

List(("a", 1), ("b", 2), ("c", 3))
.toDF("str", "digit")
.withColumn("random", lit(rand()))
.show(10)

Result:

+---+-----+-------------------+
|str|digit|             random|
+---+-----+-------------------+
|  a|    1| 0.5952030024781159|
|  b|    2| 0.9646080878588672|
|  c|    3|0.21797137458332738|
+---+-----+-------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...