【发布时间】:2022-01-02 09:14:10
【问题描述】:
我使用以下代码:
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 返回一个新的数据框。那为什么它仍然可以使用父数据框中的男性列。
【问题讨论】:
标签: dataframe apache-spark pyspark apache-spark-sql