Я использую следующий код:
random = [("ABC",xx, 1),
("DEF",yy,1),
("GHI",zz, 0)
]
randomColumns = ["name","id", "male"]
randomDF = spark.createDataFrame(data=random, schema = randomColumns)
test_df = randomDF.select("name", "id")
test_df.filter(f.col("male") == '1').show()
Из приведенного выше кода я ожидаю, что это приведет к ошибке, потому что для test_df я не выбираю мужской столбец из исходного кадра данных. Удивительно, но приведенный выше запрос выполняется просто отлично без каких-либо ошибок и выводит следующее:
+---------+-------+
|name | id|
+---------+-------+
| abc| xx|
| def| yy|
+---------+-------+
Я хочу понять логику того, что делает искра. В соответствии с документацией spark Select возвращает новый фрейм данных. Тогда почему он все еще может использовать мужской столбец из родительского фрейма данных.