Я новичок в 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| 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:...|
...
У меня 200 таких записей.
Я вычисляю вхождения четных типов следующим образом:
val dfIndividual = dfOriginal.groupBy("event_type_id").count().sort(-col("count"))
dfIndividual.show(200)
Я запутался: всякий раз, когда я выполняю это (в Zeppelin), я получаю разные результаты. Например:
+-------------+-----+
|event_type_id|count|
+-------------+-----+
| 24222| 30|
| 10644| 16|
| 21164| 9|
...
или - всего несколько секунд спустя:
+-------------+-----+
|event_type_id|count|
+-------------+-----+
| 5715| 34|
| 3637| 19|
| 3665| 17|
| 9280| 13|
...
Разница между этими двумя результатами пугает меня всерьез. В чем проблема? Это Цеппелин? Базовая искра? Как заверить, что я получу воспроизводимые результаты здесь?