карта не читает каждую запись отсортированного кадра данных в правильном порядке - PullRequest
0 голосов
/ 06 февраля 2019

Привет, сообщество стеков. Я новичок в кодировке Scala и Spark, и я пытаюсь отобразить каждую запись отсортированного фрейма данных и карту, вместо того, чтобы взять одну за другой строку, которую они читают, случайным образом или 3 вместе. Фрейм данныхсортируется и хранится в переменных данных, которые содержат

|0.04|0.03|
| 0.1|0.02|
|0.07|0.06|
|0.02|0.12| 
|0.05|0.09|
|0.01|0.15|
|0.16|0.01| 
|0.05|0.14|
|0.14|0.05|
|0.09|0.13|
|0.13| 0.1|


 val d = data.rdd.map(x=> {println(x)})
    println(d.count())

я ожидаю этот вывод:

[0.04,0.03]
[ 0.1,0.02]
[0.07,0.06]
[0.02,0.12] 
[0.05,0.09]
[0.01,0.15]
[0.16,0.01] 
[0.05,0.14]
[0.14,0.05]
[0.09,0.13]
[0.13, 0.1]

но у меня есть это:

[0.07,0.06]
[0.05,0.09]
[0.02,0.12]
[0.04,0.03]
[0.1,0.02]
[0.01,0.15]
[0.09,0.13]
[0.16,0.01]
[0.13,0.1]
[0.05,0.14]
[0.14,0.05]

1 Ответ

0 голосов
/ 06 февраля 2019

В Spark ваши данные, вероятно, будут распределены по разным разделам.Таким образом, вы не можете гарантировать порядок println операторов.

Вы можете проверить, какая строка принадлежит какому разделу, как;

data.rdd.mapPartitionsWithIndex((index, part) => { 
   part.map(row => (index,row))
}).foreach(d => println(d))

Или вы можете использовать функцию .coalesce(1), чтобы уменьшить размер раздела.считается до 1. Это создаст новый набор данных с 1 разделом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...