Как использовать настраиваемый типобезопасный агрегатор в Spark SQL - PullRequest
0 голосов
/ 28 июня 2018

Документация Spark описывает, как создать нетипизированную пользовательскую агрегатную функцию ( code ) (он же udaf) и строго типизированный агрегатор ( код ) (он же подкласс org.apache.spark.sql.expressions.Aggregator).

Я знаю, что вы можете зарегистрировать udaf для использования в SQL через spark.udf.register("udafName", udafInstance), а затем использовать его как spark.sql("SELECT udafName(V) as aggV FROM data").

Есть ли способ использовать агрегатор в sql?

1 Ответ

0 голосов
/ 29 июня 2018

Не совсем Aggregator API разработан специально для «строго» типизированного Datasets. Вы заметите, что это не займет Columns, но всегда работает с целыми объектами записи.

Это не совсем вписывается в модель обработки SQL:

  • В SQL вы всегда работаете с Dataset[Row]. Не очень полезно для Aggregator.
  • Операции применяются к столбцам, в то время как Aggregator занимает полное Row.

Для использования с SQL API вы можете создать UserDefinedAggregateFunction, который можно зарегистрировать, используя стандартные методы .

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