Проблема здесь не в цеппелине, а в тебе как программисте. Spark - это распределенный (кластерный) механизм анализа данных, написанный на Scala, который, следовательно, работает в JVM. Pyspark - это Python API для Spark, который использует библиотеку Py4j для предоставления интерфейса для объектов JVM.
Такие методы, как .toPandas()
или .collect()
, возвращают объект python, который является не просто интерфейсом для Объекты JVM (т.е. он действительно содержит ваши данные). Они являются дорогостоящими, поскольку требуют передачи ваших (распределенных) данных из JVM в интерпретатор python внутри драйвера искры. Поэтому вы должны использовать его только в том случае, если результирующие данные малы и работают как можно дольше с фреймами данных pyspark.
Другой вопрос, касающийся разного времени выполнения, необходимо обсудить с администратором кластера. Скачки в сети и задания, отправленные другими пользователями, могут сильно повлиять на время выполнения. Я также удивлен, что ваш первый запуск после перезапуска интерпретатора искры происходит быстрее, потому что во время первого запуска создается контекст искр и выделяются ресурсы кластера, что добавляет некоторые накладные расходы.