1

Какова алгоритмическая сложность и/или потребление памяти в операциях dataframe в Spark? Я не могу найти никакой информации в документации.Какова временная сложность и объем памяти операций DataFrame в Spark?

Один полезный пример был бы ответ на/диске объем памяти при удлинении на dataframe с другой колонке (withColumn()): (в Python с автоматической сборки мусора) это лучше сделать table = table.withColumn(…) или же extended_table = table.withColumn() занимает около одной и той же памяти ?

PS: Предположим, что обе таблицы сохраняются с persist().

ответ

1

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

Дополнительная память требуется только при кэшировании промежуточных результатов через .cache() или .persist().

+0

Хорошая точка. Поэтому мой вопрос будет более точным: что произойдет, если мы будем кэшировать как исходную 'таблицу', так и расширенную версию' extended_table', в случае 'withColumn()': у нас есть _copy_ 'table' или просто умное хранилище, которое знает, что 'extended_table' является просто' table' плюс один столбец? – EOL

+1

[Внутренний] (https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/DataFrame.scala) 'withColumn()' просто вызывает знаменитый 'select()', базовая форма которого всегда работает только с коллекциями столбцов и даже не имеет понятия целой таблицы. Это наводит на мысль, что созданный DataFrame - это ваше умное хранилище. Если вы все еще сомневаетесь, должно быть легко проверить потребление памяти вашего DataFrame, посмотрев на [Spark Web UI] (http://127.0.0.1:4040/storage/). – Jonathan

Смежные вопросы