API набора данных Spark groupByKey KeyValueGroupedDataset - PullRequest
0 голосов
/ 25 ноября 2018

Как создать TypedColumn в статистическом методе после groupByKey?Предположим, у нас была следующая структура данных, и мы создали bean-компонент (MyObject) для чтения набора данных.

    USER | LIST | PARTNER_LIST

    Dataset<MyObject> r = sp.read()
    .parquet("mypath/*").as(Encoders.bean(MyObject.class));
    //group by list
    r.groupByKey((MapFunction< MyObject, String>) v -> 
    v.getList(), Encoders.STRING())
    .agg(TypedColumn<MyObject,R> what??? )

В функции agg мне нужно передать TypedColumn, но я не нахожу в Интернете ничего, что объясняло бы, как я могусделай это.

Может кто-нибудь привести пример?

1 Ответ

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

Как следует из названия, TypedColumn - это столбец с типом.

  • Вы можете использовать оператор as[] для добавления типа
  • Также вы можете использовать метод name() для добавления псевдонима.

Игрушкапример:

import org.apache.spark.sql.functions._

val exampleDF = Seq(("Bob", "male"), ("Mary", "female"), 
                    ("Mike", "male"), ("Mike", "male")).toDF("name", "gender")

exampleDF.groupByKey(_.getAs[String]("gender")).
  agg(countDistinct("name").as[Long].name("distinctCnt")).show()

+------+-----------+
| value|distinctCnt|
+------+-----------+
|female|          1|
|  male|          2|
+------+-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...