Io uso il seguente codice:
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()
Il codice di cui sopra, mi aspetto che si tradurrà in un errore, perché per la test_df io non selezionare il maschio colonna originale dataframe. Sorprendentemente la query di cui sopra, scorre bene senza errori e uscite il seguente:
+---------+-------+
|name | id|
+---------+-------+
| abc| xx|
| def| yy|
+---------+-------+
Voglio capire la logica che sta dietro a ciò scintilla sta facendo. Come per la scintilla documentazione Select restituisce un nuovo dataframe. Allora perché è ancora in grado di utilizzare il maschio colonna dal genitore dataframe.