Я изучаю, как работает Spark внутри Databricks. Я понимаю, как тасование вызывает этапы в работе, но я не понимаю, что вызывает работу. Я думал, что отношения - это одна работа на одно действие, но иногда много действий происходит на одно действие.
* 1003 Е.Г. *
val initialDF = spark
.read
.parquet("/mnt/training/wikipedia/pagecounts/staging_parquet_en_only_clean/")
val someDF = initialDF
.orderBy($"project")
someDF.show
запускает два задания: одно для просмотра схемы и одно для .show
.
И тот же код с .groupBy
вместо
val initialDF = spark
.read
.parquet("/mnt/training/wikipedia/pagecounts/staging_parquet_en_only_clean/")
val someDF = initialDF
.groupBy($"project").sum()
someDF.show
... запускает девять рабочих мест.
Замена .show
на .count
, версия .groupBy
запускает два задания, а версия .orderBy
запускает три.
Извините, я не могу поделиться данными, чтобы сделать это воспроизводимым, но надеялся понять правила, когда задания создаются абстрактно. Рад поделиться результатами .explain
, если это будет полезно.