Yo uso el siguiente código:
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()
En el código anterior espero que se producirá un error debido a que para el test_df yo no seleccione el macho de la columna de la original dataframe. Sorprendentemente la consulta anterior funciona bien sin ningún error y las salidas de los siguientes:
+---------+-------+
|name | id|
+---------+-------+
| abc| xx|
| def| yy|
+---------+-------+
Quiero entender la lógica detrás de lo que la chispa está haciendo. Como por la chispa de la documentación Select devuelve un nuevo dataframe. Entonces, ¿por qué todavía es capaz de utilizar el masculino columna de la matriz dataframe.