У меня есть фрейм данных Spark, который мне нужно отфильтровать по условию.
Условие: В кадре данных есть столбец "keyword"
, и мне нужно вызвать API, передающий значение этого столбца keyword
. Это должно быть сделано для всех значений столбца keyword
. API отправит обратно одно число, которое мне нужно сопоставить с пороговым значением. Если оно больше, тогда нужно вернуть true, иначе false.
Я написал для этого UDF , и он выглядит как показано ниже.
val filteredDf = df.filter(apiUdf(col("keyword_text")) === true))
val apiUdf = udf((topic: String) => {..
.....
HTTP API call ..
parse the result ...
find out the number from the API resposne..
and then compare it with some threshold value and return true/false
Здесь проблема в том, что я открываю и закрываю HTTP-соединение столько раз, сколько у меня есть ключевых слов .. Может кто-нибудь сказать мне, как оптимизировать это, а также, если подход UDF здесь подходит?