我知道rand()
会产生一列具有随机值的列,而orderBy
会接受一列以降序或升序排序。
看着dataframe.orderBy(rand)
:
即使orderBy
尚未在dataframe
上创建,我也感到困惑,dataframe.withColumn("X",rand).orderBy("X")
可以接受列和排序。
相比
dataframe("X")
其中dataframe.orderBy(rand)
已经定义。
哪个使我想到两个问题。
dataframe.withColumn("X",rand).orderBy("X")
与.orderBy
在排序方面是否相同?
是否有必要在使用capabilities.setCapability("noReset", false);
之前创建其他列以进行订购?
答案 0 :(得分:1)
是的,两个变体都是等效的,这令人惊讶。 orderBy
采用表达式或列名。这是第一个变体。如果您熟悉SQL,则
dataframe.withColumn("X",rand).orderBy("X")
等同于
SELECT * FROM (SELECT *, randr AS X FROM table) ORDER BY X
同时
dataframe.orderBy(rand)
等同于
SELECT * FROM table ORDER BY randr