Точка продукта между двумя столбцами вектора DataFrame в Spark без UDF - PullRequest
0 голосов
/ 22 декабря 2018

Рассмотрим Spark DataFrame с двумя столбцами, каждый из которых имеет тип Vector.Есть ли способ, который не требует использования UDF для вычисления точечного произведения между ними?

Я использую Spark 2.4 (в случае DataBricks, если есть решение с использованием их функций более высокого порядка)

1 Ответ

0 голосов
/ 22 декабря 2018

Нет никакого разумного * способа сделать такую ​​вещь, как Векторы не являются нативными типами.Вместо этого они реализуют UserDefinedTypes и, как таковые, могут обрабатываться только косвенно .

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


* Можно получить весьма непрямое решение, например:

  • Добавление уникального идентификатора
  • Вектор сбросав JSON.
  • Чтение JSON путем повторной инициализации во внутреннее представление StructType.
  • Вектор разрыва с pos_explode (DenseVector) или индексы и значения индексации (SparseVector)
  • Самосоединение по уникальным и индексным признакам.
  • Совокупность.

Любая такая вещь будет дорогой и совершенно непрактичной.

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