spark_apply намного медленнее после обновления с версии 0.8.4 - PullRequest
0 голосов
/ 30 января 2020

У меня есть код, который значительно медленнее после перехода с sparklyr 0.8.4 на любую последующую версию. Ниже приведен пример, который демонстрирует проблему, с которой я столкнулся. В моей тестовой системе код выполняется примерно за 15-20 секунд при 0,8,4 и 200-300 секунд для всех последующих версий

Что-то не так с кодом, вызывающим замедление? Или, может быть, какой-то параметр конфигурации мне нужно использовать? Это происходит с искрой 2.3.x и 2.4.x. dplyr, dbplyr, rlang и др. c. все используют последнюю версию.

Одна вещь, которую я попробовал, это добавление параметра group_by = 'X1' к вызову spark_apply. Он работал быстрее, но не так быстро, как версия 0.8.4.

library(sparklyr)

sc = spark_connect(master=Sys.getenv("SPARK_MASTER_URL"))

names <- c("Alvin", "Betty", "Charlie", "Denise", "Edward", "Francine", "George", "Harriet", "Igor", "Juliet")
rdf <- data.frame(replicate(50, sample(names, 5000, replace = T)))
df1 <- sdf_copy_to(sc, rdf)
sa1 <- df1 %>% spark_apply( function(e) {
  library(digest);
  sub = e['X1'];
  subhash = apply(sub, 1, digest, algo = 'md5', seed = 'f39a696e276d3123eced4f4450024333793a219cb6feb8b567689589cd6a7499');
  e['X1'] = subhash;
  e
})
sa2 <- sa1 %>% collect()
spark_disconnect(sc)
...