В соответствии с архитектурой Spark DataFrame построен поверх RDD, которые являются неизменяемыми по своей природе, следовательно, кадры данных также являются неизменными по своей природе.
Что касается withColumn или любой другой операции по этому вопросу, когда вы применяете такие операции к фреймам данных, он генерирует новый фрейм данных вместо обновления существующего фрейма данных.
Однако, когда вы работаете с python, который является языком с динамической типизацией, вы перезаписываете значение предыдущей ссылки. Следовательно, когда вы выполняете приведенное ниже утверждение
df = df.withColumn()
Он сгенерирует другой фрейм данных и присвоит ему ссылку "df
".
Чтобы проверить то же самое, вы можете использовать id()
метод rdd, чтобы получить уникальный идентификатор вашего фрейма данных.
df.rdd.id()
даст вам уникальный идентификатор для вашего фрейма данных.
Надеюсь, приведенное выше объяснение поможет.
С уважением,
Neeraj