Спасибо Прем! Это действительно будет работать. Однако я понял, что это немного медленнее, чем хотелось бы, так как мы собираем данные для драйвера, а затем перепараллеливаем список с DataFrame. Прямо сейчас я предпочитаю подход оконной функции, предложенный. @Garren

то я хочу сделать, это дать DataFrame, взять верхние n элементов в соответствии с некоторым указанным столбцом. Вершина (self, num) в RDD API - это именно то, что я хочу. Интересно, есть ли в мире DataFrame эквивалентный API?

Моя первая попытка заключается в следующем

def retrieve_top_n(df, n):
    # assume we want to get most popular n 'key' in DataFrame
    return df.groupBy('key').count().orderBy('count', ascending=False).limit(n).select('key')

Тем не менее, я понял, что это приводит к недетерминированному поведению (я не знаю точную причину, но я предполагаю, что limit (n) не гарантирует, какой n взять)

Ответы на вопрос(3)

Ваш ответ на вопрос