Есть ли способ разрезать фрейм данных на основе индекса в pyspark? - PullRequest
0 голосов
/ 13 октября 2018

В python или R есть способы нарезать DataFrame с помощью индекса.

Например, в pandas:

df.iloc[5:10,:]

Есть ли аналогичный способ в pyspark для разрезания данных на основе расположения строк?

1 Ответ

0 голосов
/ 15 октября 2018

Короткий ответ

Если у вас уже есть индексный столбец (предположим, он назывался 'id'), вы можете выполнить фильтрацию с помощью pyspark.sql.Column.between:

from pyspark.sql.functions import col
df.where(col("id").between(5, 10))

Если у вас еще нет индексного столбца, вы можете добавить его самостоятельно и затем использовать приведенный выше код.У вас должен быть какой-то порядок, встроенный в ваши данные, основанный на некоторых других столбцах (orderBy("someColumn")).


Полное объяснение

Нет, это не легко возможноразделить Spark DataFrame по индексу, если только индекс уже не представлен в виде столбца.

Spark DataFrames по своей природе неупорядочены и не поддерживают произвольный доступ.(Нет понятия встроенного индекса, как в ).Каждая строка рассматривается как независимая коллекция структурированных данных, и это позволяет распределенную параллельную обработку.Таким образом, любой исполнитель может взять любой фрагмент данных и обработать его, не обращая внимания на порядок строк.

Теперь очевидно, что позволяет выполнять операции, которые делают включает заказы (lead, lag и т. д.), но они будут медленнее, потому что для перетасовки данных между исполнителями требуется искра.(Перетасовка данных, как правило, является одним из самых медленных компонентов задания «спарк».)

Связанное / Дальнейшее чтение

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