Как улучшить производительность этой группы и агрегатов в PySpark? - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь преобразовать фрейм данных в RDD и затем выполнить операцию агрегирования (ключ = (AccountKey, x). Агрегировать max для ключа 1, max для ключа 2 и max для ключа 3).Но, к сожалению, я чувствую, что до сих пор не понимаю, как это сделать.Я могу выполнить это на фрейме данных, но из-за тасования производительность плохая (я пробовал перераспределение, но это не помогло).Как мне улучшить показатели с точки зрения производительности?

Вот мой код для выполнения группового и агрегирования на фрейме данных:

def operation_xy(df):
    # Groupby Account and x
    groupByExpr = ['Account', 'x']
    exprs = [F.max(F.col(c)) for c in ['1', '2', '3']]

    return df.groupBy(groupByExpr).agg(*exprs)

Вот мой ввод:

[Row(AccountKey='5878', x=32.0, 1=False, 2=False, 3=False)]
[Row(AccountKey='5178', x=24.0, 1=False, 2=False, 3=True)]
[Row(AccountKey='5178', x=24.0, 1=False, 2=True, 3=False)]
[Row(AccountKey='5178', x=32.0, 1=False, 2=False, 3=False)]
[Row(AccountKey='5878', x=32.0, 1=True, 2=False, 3=True)]

Ожидаемый результат:

[Row(AccountKey='5878', x=32.0, 1=True, 2=False, 3=True)]
[Row(AccountKey='5178', x=24.0, 1=False, 2=True, 3=True)]
[Row(AccountKey='5178', x=32.0, 1=False, 2=True, 3=False)]

Я новичок в Spark, поэтому, пожалуйста, будьте осторожны: -)

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