Я хочу извлечь некоторые статистические измерения из больших Spark DataFrames (приблизительно 250K записей, 250 столбцов), например, max, mean, stddev и т. Д., Но я также хочу некоторые нестандартные измерения, такие как асимметрия. Я работаю над базами данных, используя SparkR API. Я знаю, что есть возможность получить основную статистику через сводку
df <- SparkR::asDataFrame(mtcars)
SparkR::summary(df, "min", "max", "50%", "mean") -> mySummary
head(mySummary)
Однако это не распространяется на другие показатели, такие как асимметрия, и я в основном извлекаю их, используя
SparkR::select(df, SparkR::skewness(df$mpg)) -> mpg_Skewness
head(mpg_Skewness)
Это работаетТем не менее, я ищу более эффективный способ сделать это. Независимо от того, выполняю ли я циклы над столбцами или использую функцию применения к столбцам, Spark всегда выполняет одно задание на столбец, которые запускаются впоследствии.
Я также пытался выполнить это для всех столбцов как одно задание, но это даже медленнее.
Можно ли заставить Spark выполнять подобные вычисления отдельно для всех столбцов, но параллельно? Что еще вы могли бы предложить, чтобы такие операции над столбцами выполнялись как можно быстрее? Любые советы приветствуются!