После выбора списка столбцов в pyspark будут ли скрыты остальные невыбранные столбцы? - PullRequest
0 голосов
/ 26 мая 2020

enter image description here

В приведенной выше таблице у меня есть 5 столбцов, и я выбрал 2 столбца и сохранен как новый фрейм данных. Из невыбранного столбца, когда я пытаюсь получить информацию о новом фрейме данных, он возвращает результат вместо ошибки, поскольку столбец отсутствует в фрейме данных.

Пример кода:

df1 = df.select('id', 'subject1')
df1.filter('subject2' > 50).show()

Вышеуказанный фрейм данных не имеет subject2, но возвращает результат вместо ошибки trowing. Как полностью удалить список столбцов из памяти?

Результат вывода фрейма данных:

enter image description here

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Поскольку pyspark лениво оценивается всякий раз, когда вы применяете .select или .drop, они не выполняются прямо здесь и добавляются в DAG и будут выбраны позже после применения действия к фрейму данных.

Итак, вы можете фильтровать по невыбранному столбцу также до тех пор, пока к кадру данных не применяется действие.

Что касается памяти, то искра ничего не считывает в памяти, пока действие не будет выполнено, а только создает DAG, и только после того, как вы выполните действие, вещи начинают попадать в память.

0 голосов
/ 26 мая 2020

не может воспроизвести ваш случай. Как правило, при выборе нескольких столбцов для фильтрации будут доступны только они. Вы должны получить ошибку типа, что условие должно быть строкой или столбцом. Убедитесь, что выше в коде вы не указали subject2 как объект.

Также попробуйте:

df1 = df1.drop('subject2', 'subject3', 'subject4')

Надеюсь, это поможет.

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