У меня есть очень большие наборы данных в фреймах данных Spark, которые распределены по узлам. Я могу делать простые статистические данные, такие как mean
, stdev
, skewness
, kurtosis
и т. Д., Используя библиотеки Spark pyspark.sql.functions
.
Если я хочу использовать расширенные статистические тесты, такие как Jarque-Bera (JB) или Shapiro-Wilk (SW) и т. Д., Я использую библиотеки python, такие как scipy
, поскольку в стандартных библиотеках pyspark apache их нет. Но для этого мне нужно преобразовать фрейм данных Spark в pandas, что означает принудительную передачу данных в главный узел следующим образом:
import scipy.stats as stats
pandas_df=spark_df.toPandas()
JBtest=stats.jarque_bera(pandas_df)
SWtest=stats.shapiro(pandas_df)
У меня есть несколько функций, и каждый идентификатор функции соответствует набору данных, для которого я хочу выполнить тестовую статистику.
У меня вопрос:
Есть ли способ применить эти питонические функции к фрейму данных Spark, пока данные все еще распределяются по узлам, или мне нужно создать свои собственные статистические функции теста JB / SW в искре?
Спасибо за любую ценную информацию