Какой вариант дает лучшую производительность с pyspark? Обработка UDF или RDD с картой?

Какой вариант дает лучшую производительность с pyspark? Обработка UDF или RDD с картой?

Я потребляю данные с помощью искровой структурированной потоковой передачи, и для каждого микропакета я конвертирую DF в RDD и выполняю некоторые операции python graphkit и снова конвертирую RDD в DF для записи в поток Kafka.


person Learnis    schedule 26.06.2020    source источник


Ответы (1)


Я вообще заметил, что udf быстрее, чем отображение rdd. В зависимости от вашей версии python вы можете использовать pandas udf, что определенно быстрее. См. Здесь: https://databricks.com/blog/2017/10/30/introduction-vectorized-udfs-for-pyspark.html

person Raghu    schedule 26.06.2020
comment
Я так понял pandas udf быстрее. но когда вы конвертируете spark df в pandas df, тогда данные передаются на узел драйвера. Я чувствую, что это не распределенные вычисления. - person Learnis; 26.06.2020
comment
Вам не нужно конвертировать его в панд. См. Пример в ссылке из pyspark.sql.functions import pandas_udf, PandasUDFType # Используйте pandas_udf для определения Pandas UDF @pandas_udf ('double', PandasUDFType.SCALAR) # Оба ввода / вывода - это панды. v): return v + 1 df.withColumn ('v2', pandas_plus_one (df.v)) Таким образом, pandas udf можно напрямую применять к фреймам данных Spark. Имя pandas udf, потому что вместо выполнения построчно наш столбец обрабатывается как серия pandas или фрейм данных pandas в зависимости от типа функции. - person Raghu; 26.06.2020