Какой тип вывода более эффективен для UDF для возврата массива - PullRequest
0 голосов
/ 29 мая 2018

Я использую Spark SQL и UDF используется для вычисления столбца типа ArrayType

Какой тип вывода самый быстрый с точки зрения производительности?

Spark принимает любую реализациючерты Seq, но я думаю, что она внутренне представлена ​​WrappedArray (в вольфрам).

Поэтому мне интересно, лучше ли, например, вернуть Array вместо Vector,чтобы избежать некоторой кодировки.

1 Ответ

0 голосов
/ 29 мая 2018

Я думаю, что он представлен внутри WrappedArray (в вольфрам).

Это не так.WrappedArray (буквально Array, расширенный для соответствия scala.collection API) - это внешнее представление.Внутреннее представление (исключая примитивные типы) не зависит от стандартного API Scala.

Поэтому мне интересно, лучше ли, например, возвращать массив вместо вектора, чтобы избежать некоторого кодирования.

Это не будет иметь значения.Выходные данные udf полностью кодируются поэлементно.Невозможно избежать полной копии возвращаемого значения.

Если обработка не может быть выполнена с (весьма ограниченным) SQL API, вы застряли на том, что имеете, пока API функций более высокого порядка не будет открыт с открытым исходным кодом.от Databricks.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...