Вывод отличается при использовании spark_apply во фрейме данных Spark и локальных вычислений - PullRequest
0 голосов
/ 07 мая 2019

Я довольно новичок в sparklyr, и я пытаюсь использовать spark_apply, чтобы использовать функцию из пакета CRAN (ChannelAttribution) в кадре данных Spark. Вывод, который я получаю с помощью spark_apply, отличается от того, что я использую в обычном режиме в кадре данных памяти.

library(sparklyr)
library(dplyr)
library(tibble)
library(ChannelAttribution)

sc <- spark_connect(master = "local")

# Define some sample paths which lead to conversion.
my_paths <- tibble(path = c("A > B > C",
                            "A > A",
                            "C > B > C",
                            "B > A > B > B"),
                   conversion = 1)

# Calculate markov conversion values normally.
ChannelAttribution::markov_model(my_paths,
                                 var_path = "path",
                                 var_conv = "conversion",
                                 order = 3)

# Copy to a Spark DataFrame without repartitioning, and use spark_apply to
# calculate the markov conversion values.
my_paths %>%
  sdf_copy_to(sc, ., "my_paths", repartition = 1) %>%
  spark_apply(function(df) {
    ChannelAttribution::markov_model(df,
                                     var_path = "path",
                                     var_conv = "conversion",
                                     order = 3)
  }) %>% 
  collect()

Первый вывод

channel_name   total_conversions
           A           1.5011965
           B           1.4990816
           C           0.9997219

Вывод spark_apply равен

channel_name   total_conversions
           A                1.33
           B                1.33 
           C                1.33

Любая идея о том, почему это так, будет высоко оценена.

...