Size: a a a

2022 February 03

A

Alex in Moscow Spark
по грубым прикидкам там 64ms на модель/row получается, много это или мало хз =) я не датасатанист
источник

DZ

Dmitry Zuev in Moscow Spark
мож там модель поднимается на каждую строку
источник

MD

Michael Davydov in Moscow Spark
+1
источник

k

kvadratura in Moscow Spark
попробуйте вместо udf использовать mapPartitions, если у вас первый вызов модели дорогой
источник

k

kvadratura in Moscow Spark
+ есть немаленькие шансы, что в udf при каждом вызове что-то долго создается
источник

k

kvadratura in Moscow Spark
может, уткнулись в non serializable, и запихнули всю инициализацию в udf
источник

A

Ali Isfandiyarov in Moscow Spark
примерно выглядит вот так val predictor = Predictor.loadPredictor(cfg)

val udfPredict = udf((x: String) => {
 val values = x.split("#").map(_.toFloat)
 val matrix = new DMatrix(values, 1, values.length)
 predictor.predict(matrix)(0)(0)
})
источник

MD

Michael Davydov in Moscow Spark
Ну да, я бы начал с map partition в вашем случае
источник

MD

Michael Davydov in Moscow Spark
Не так красиво, как юдф, но очень эффективно
источник

A

Ali Isfandiyarov in Moscow Spark
попробую)
источник

MD

Michael Davydov in Moscow Spark
Возвращайтесь с потом результатом, интересно же)
источник

A

Ali Isfandiyarov in Moscow Spark
окей)
источник

k

kvadratura in Moscow Spark
мне кажется, это можно разбить на несколько функций, и последовательно их вызвать
источник

PL

Pavel Lu in Moscow Spark
сразу вопрос - в каждой udf у вас split строки
источник

k

kvadratura in Moscow Spark
и с mapPartitions лучше loadPredictor запихнуть внутрь вызываемой функции, а "снаружи" подавать только конфиг
источник

PL

Pavel Lu in Moscow Spark
да и  создание матрицы...
источник

k

kvadratura in Moscow Spark
сколько элементов получается обычно после split?
источник

A

Ali Isfandiyarov in Moscow Spark
зависит от модели, от 8-40 где-то
источник

k

kvadratura in Moscow Spark
т. е. есть нечто, происходящее до udf, которое создает строки с #?
источник

A

Ali Isfandiyarov in Moscow Spark
да, поскольку 1 скрипт должен обрабатывать разные модели
источник