两者有什么区别 empDF["Last Name"].desc()
以及 desc("Last Name")
因为两者都给出了相同的结果,都涉及到洗牌操作
>>> empDF.orderBy(empDF["Last Name"].desc()).show(4)
+------+----------+---------+------+------+
|Emp ID|First Name|Last Name|Gender|Salary|
+------+----------+---------+------+------+
|977421| Zackary| Zumwalt| M|177521|
|741150| Awilda| Zuber| F|144972|
|274620| Eleanora| Zook| F|151026|
|242757| Erin| Zito| F|127254|
+------+----------+---------+------+------+
only showing top 4 rows
>>> empDF.orderBy(desc("Last Name")).show(4)
+------+----------+---------+------+------+
|Emp ID|First Name|Last Name|Gender|Salary|
+------+----------+---------+------+------+
|977421| Zackary| Zumwalt| M|177521|
|741150| Awilda| Zuber| F|144972|
|274620| Eleanora| Zook| F|151026|
|242757| Erin| Zito| F|127254|
+------+----------+---------+------+------+
only showing top 4 rows
我注意到,在必须导入列名之前使用desc() from pyspark.sql.functions import desc
. 像前者是spark dataframe列函数的一部分,而后者是spark sql函数吗???是否有任何支持文件或解释来澄清这一困惑(我没有发现任何)???
提前谢谢。
2条答案
按热度按时间zd287kbt1#
多次阅读文档后,我现在明白了。pyspark.sql.*模块中有两个desc()。一个在里面
pyspark.sql.functions
模块(此处)。此方法采用强制列参数。第二个在里面pyspark.sql.Column
班级(这里)。这个不需要任何论证。这两个实现做几乎相同的事情和相同的方式。但实现是不同的,可以与适当的import语句互换使用。
3phpmpom2#
两者都是一回事。根据文档和源代码(
funtions.desc..
)-内部检查
desc(columnName)
呼叫Column(columnName).desc
所以两者都是相同的(把这两个作为执行相同操作的两个备选方案)