Мне нужно агрегировать значения столбца articleId
в массив. Это нужно сделать в группе, которую я создаю за groupBy
заранее.Spark SQL: Совокупные значения столбцов в группе
Моя таблица выглядит следующим образом:
| customerId | articleId | articleText | ...
| 1 | 1 | ... | ...
| 1 | 2 | ... | ...
| 2 | 1 | ... | ...
| 2 | 2 | ... | ...
| 2 | 3 | ... | ...
И я хочу, чтобы построить что-то вроде
| customerId | articleIds |
| 1 | [1, 2] |
| 2 | [1, 2, 3] |
Мой код до сих пор:
DataFrame test = dfFiltered.groupBy("CUSTOMERID").agg(dfFiltered.col("ARTICLEID"));
Но здесь я получаю AnalysisException
:
Exception in thread "main" org.apache.spark.sql.AnalysisException: expression 'ARTICLEID' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() (or first_value) if you don't care which value you get.;
Может кто-нибудь помочь построить правильное заявление?
ли вам использовать 'SQLContext' или' HiveContext'? –
Я использую SQLContext ... –