Scala 齐柏林飞艇-两次相同的表演(),两次不同的结果

Scala 齐柏林飞艇-两次相同的表演(),两次不同的结果,scala,apache-spark,apache-spark-sql,apache-zeppelin,Scala,Apache Spark,Apache Spark Sql,Apache Zeppelin,我是齐柏林飞艇的新手,也许我的问题很幼稚。首先,我得到的基本数据如下: import org.apache.spark.sql.functions.sql val dfOriginal = sql("SELECT CAST(event_type_id AS STRING), event_time FROM sl_event SORT BY event_time LIMIT 200") +-------------+--------------------+ |event_type_id|

我是齐柏林飞艇的新手,也许我的问题很幼稚。首先,我得到的基本数据如下:

import org.apache.spark.sql.functions.sql
val dfOriginal = sql("SELECT CAST(event_type_id AS STRING), event_time  FROM sl_event SORT BY event_time LIMIT 200")

+-------------+--------------------+ 
|event_type_id| event_time| 
+-------------+--------------------+ 
| 23882|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...| 
| 25681|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...| 
| 2370|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...|
...
val dfIndividual = dfOriginal.groupBy("event_type_id").count().sort(-col("count"))
dfIndividual.show(200)
我有200张这样的唱片

我计算偶数类型的出现次数,如下所示:

import org.apache.spark.sql.functions.sql
val dfOriginal = sql("SELECT CAST(event_type_id AS STRING), event_time  FROM sl_event SORT BY event_time LIMIT 200")

+-------------+--------------------+ 
|event_type_id| event_time| 
+-------------+--------------------+ 
| 23882|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...| 
| 25681|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...| 
| 2370|2018-05-03 11:41:...| 
| 23882|2018-05-03 11:41:...|
...
val dfIndividual = dfOriginal.groupBy("event_type_id").count().sort(-col("count"))
dfIndividual.show(200)
我很困惑:每当我(在齐柏林飞艇上)执行这个命令时,我都会有不同的结果。例如:

+-------------+-----+
|event_type_id|count| 
+-------------+-----+ 
| 24222| 30| 
| 10644| 16| 
| 21164| 9|
...
或者-几秒钟后:

+-------------+-----+ 
|event_type_id|count| 
+-------------+-----+ 
| 5715| 34| 
| 3637| 19| 
| 3665| 17| 
| 9280| 13|
...

这两个结果之间的差异让我非常害怕。问题在哪里?是齐柏林飞艇吗?潜在的火花?如何确保在这里得到可重复的结果?

我能想到的唯一原因是

a) 源表
sl_事件
在此期间已更改。由于未缓存结果,因此您调用的任何操作(例如,
show
)都将重新评估所有内容

或者b)您有许多事件具有相同的
event\u time
,因此按
event\u time limit 200
排序不会得到一致的结果,请在第一次查询中尝试
按事件\u time排序,event\u type\u id limit 200
,或者在第二个排序列中更好地使用唯一的id