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,你可以通过以下方式实现
使用 joinWith 连接两个数据集,您可以在此处找到示例 https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-joins.html#joinWith
聚合:我会使用 groupByKey
后跟 mapGroups
之类的
ds.groupByKey(x=>x.id).mapGroups { case (key,iter) => {
val list = iter.toList
val totalTransactionAmount = ???
val averageTransactionAmount = ???
(key,totalTransactionAmount,averageTransactionAmount)
}
}
希望该示例能让您了解如何使用数据集解决您的问题 API 并使其适应您的问题。
我有两个数据集需要加入并对其执行操作,但我不知道该怎么做。 对此的规定是我没有 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,你可以通过以下方式实现
使用 joinWith 连接两个数据集,您可以在此处找到示例 https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-joins.html#joinWith
聚合:我会使用
groupByKey
后跟mapGroups
之类的
ds.groupByKey(x=>x.id).mapGroups { case (key,iter) => {
val list = iter.toList
val totalTransactionAmount = ???
val averageTransactionAmount = ???
(key,totalTransactionAmount,averageTransactionAmount)
}
}
希望该示例能让您了解如何使用数据集解决您的问题 API 并使其适应您的问题。