Apache spark 在SparkSQL中对数据集使用limit后应用筛选器时出现奇怪的结果
我正在使用spark 2.2.1,但我的问题似乎也发生在2.4中。我试图使用Apache spark 在SparkSQL中对数据集使用limit后应用筛选器时出现奇怪的结果,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我正在使用spark 2.2.1,但我的问题似乎也发生在2.4中。我试图使用limit函数,其定义如下所述 这里有一个玩具的例子,再现了我的问题 scala>spark.range(10).limit(5).show() +---+ |身份证| +---+ | 0| | 1| | 2| | 3| | 4| +---+ scala>spark.range(10).limit(5).其中('id>3).show() +---+ |身份证| +---+ | 5| | 6| +---+
limit
函数,其定义如下所述
这里有一个玩具的例子,再现了我的问题
scala>spark.range(10).limit(5).show()
+---+
|身份证|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
+---+
scala>spark.range(10).limit(5).其中('id>3).show()
+---+
|身份证|
+---+
| 5|
| 6|
+---+
我希望数据帧只有一行,包含
4
。这是一个bug,是一个特性吗?无论如何,我不明白结果。任何关于解释的提示都将不胜感激。您的数据集不是天生有序的,因此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|
+---+
scala> spark.range(10).orderBy('id).limit(5).where('id > 3).show()
+---+
| id|
+---+
| 4|
+---+