我正在使用spark 2.2.1,但我的问题似乎也在2.4中发生。我正在尝试使用下面引述其定义的limit
函数。
def limit(n: Int): Dataset[T] Returns a new Dataset by taking the first n rows.
这是一个玩具例子,再现了我的问题。
scala> spark.range(10).limit(5).show()
+---+
| id|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
+---+
scala> spark.range(10).limit(5).where('id > 3).show()
+---+
| id|
+---+
| 5|
| 6|
+---+
我希望只有一个数据行包含4
。它是错误,是功能吗?无论如何,我不明白结果。任何对解释的提示将不胜感激。
答案 0 :(得分:1)
您的数据集不是固有排序的,因此limit(5)
可以返回[0 1 2 3 4]
或[1 3 5 7 9]
,[2 7 1 3 8]
等。应用orderBy
子句将为您提供您期望的结果。
scala> spark.range(10).orderBy('id).limit(5).where('id > 3).show()
+---+
| id|
+---+
| 4|
+---+