подсчет значений в pyspark занимает слишком много времени - PullRequest
0 голосов
/ 07 мая 2018

Spark очень эффективно считывает набор из миллиарда наборов данных в течение 4 секунд, но подсчет различного значения в df довольно медленный и менее эффективный, и это занимает более 5 минут даже для небольшого набора данных, у меня есть пробовал эти подходы:

value1 = df.where(df['values'] == '1').count()

или

df.groupBy("values").count().orderBy("value_count").show()

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

ТИА

1 Ответ

0 голосов
/ 07 мая 2018

Count() - это функция, которая заставляет Spark буквально считать по строкам. Такие операции, как count(), distinct() и т. Д., Очевидно, потребуют времени из-за характера этих операций и не рекомендуются в распределенной среде.

Spark имеет структуры данных, которые не поддерживают индексацию, и, следовательно, count() будет выполнять почти полный поиск данных.

...