DataFrame sql - порядок следования Spark НЕ дает правильный порядок - PullRequest
0 голосов
/ 26 марта 2019

У меня есть простой набор данных, и я пытаюсь упорядочить элементы на основе столбца «имя». Я использовал orderby и sort в scala, но это выдает странный вывод.

    scala> val baseData = data.select($"Account.Number".as("AccountNumber"),
 $"Account.FirstName".as("FirstName"),
 $"Account.LastName".as("LastName"))

    baseData: org.apache.spark.sql.DataFrame = 
             [AccountNumber: string, FirstName: string ... 1 more field]

    scala>  baseData.show(false)
    +-------------+---------+--------+
    |AccountNumber|FirstName|LastName|
    +-------------+---------+--------+
    |123-ABC-789  |Jay      |Smith   |
    |456-DEF-456  |Sally    |Fuller  |
    |333-XYZ-999  |Brad     |Turner  |
    |987-CBA-321  |Justin   |Pihony  |
    |123-ABC-789  |Jay      |Smith   |
    |456-DEF-456  |Sally    |Fuller  |
    |123-ABC-789  |Jay      |Smith   |
    |456-DEF-456  |Sally    |Fuller  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |987-CBA-321  |Justin   |Pihony  |
    |123-ABC-789  |Jay      |Smith   |
    |456-DEF-456  |Sally    |Fuller  |
    |333-XYZ-999  |Brad     |Turner  |
    |456-DEF-456  |Sally    |Fuller  |
    |987-CBA-321  |Justin   |Pihony  |
    |456-DEF-456  |Sally    |Fuller  |
    |456-DEF-456  |Sally    |Fuller  |
    |123-ABC-789  |Jay      |Smith   |
    +-------------+---------+--------+
    only showing top 20 rows


    scala> baseData.sort($"FirstName").show(false)
    +-------------+---------+--------+
    |AccountNumber|FirstName|LastName|
    +-------------+---------+--------+
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |333-XYZ-999  |Brad     |Turner  |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    |123-ABC-789  |Jay      |Smith   |
    +-------------+---------+--------+
    only showing top 20 rows

Я получаю несколько повторяющихся строк. Я пробовал с сортировкой и упорядочением, но оба результата приводят к повторяющимся строкам.

1 Ответ

2 голосов
/ 26 марта 2019

Чтобы исключить повторяющиеся строки, введите .dropDuplicates в конце кода, который будет отображать различные записи.

baseData.sort($"FirstName").dropDuplicates.show(false)

Чтобы динамически отобразить все элементы внутри кадра данных, используйте перегруженный метод *Метод 1005 *, передавая количество данных в качестве первого параметра.

baseData.sort($"FirstName").dropDuplicates.show(baseData.count().toInt,false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...