Короткий ответ
Если у вас уже есть индексный столбец (предположим, он назывался '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
и т. д.), но они будут медленнее, потому что для перетасовки данных между исполнителями требуется искра.(Перетасовка данных, как правило, является одним из самых медленных компонентов задания «спарк».)
Связанное / Дальнейшее чтение