Scala Spark groupBy/Agg 个函数

Scala Spark groupBy/Agg functions

我有两个数据集需要加入并对其执行操作,但我不知道该怎么做。 对此的规定是我没有 org.apache.spark.sql.functions 可用的方法,因此必须使用数据集 API

给定的输入是两个数据集 第一个数据集是具有字段的 Customer 类型: customerId、名字、姓氏 - 全部字符串

第二个数据集是交易数据: customerId (String), accountId(String), amount (Long)

customerId 是 link

输出的数据集需要有这些字段: customerId (String), forename(String), surname(String), transactions(交易类型列表), transactionCount (int), totalTransactionAmount (Double), averageTransactionAmount (Double)

我知道我需要在最后使用 groupBy、agg 和某种连接。 任何人都可以 help/point 我在正确的方向吗?谢谢

很难处理你所拥有的信息,但据我了解,你不想使用数据框函数,而是想用数据集实现所有内容 api,你可以通过以下方式实现

  1. 使用 joinWith 连接两个数据集,您可以在此处找到示例 https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-joins.html#joinWith

  2. 聚合:我会使用 groupByKey 后跟 mapGroups 之类的

 ds.groupByKey(x=>x.id).mapGroups { case (key,iter) => { 
        val list = iter.toList
        val totalTransactionAmount = ???
        val averageTransactionAmount = ??? 
        (key,totalTransactionAmount,averageTransactionAmount)
   } 
 }

希望该示例能让您了解如何使用数据集解决您的问题 API 并使其适应您的问题。