|
|
1
2
下面是Scala中的一些代码,但实际上是用Scala编写的Java代码:
它打印
这段代码中的主要技巧是使用Java的
|
|
2
2
以下是解决此问题的功能方法: 对于此输入:
使用代表记录的case类:
我们可以运行以下操作:
这将产生:
一些解释: 从元组实例化case类的一种非常好的方法(从元组列表创建记录列表):
每个记录都使用其全局索引(记录,索引)进行元组化,以便能够使用排序:
然后,我们使用您所需的密钥分组:
然后,对于分组阶段产生的每个键/值,我们将输出一个记录列表(如果值是单个记录,则输出一个空列表)。因此,平面图可以将要生成的列表展平。 以下是摆脱单个记录的部分:
另一种情况涉及累计金额的创建(这是一个Int列表)(Spark开发人员注意:groupBy保留了给定键中值元素的顺序):
这些金额被压缩回记录,以便使用给定的累计金额修改每个记录金额。此外,还可以将记录序列化为最终所需的格式:
上一部分还使用索引压缩记录。事实上,每个序列化记录都提供了一个元组(firstKeyIdx,idx),该元组用于根据需要对每个记录进行排序(首先是键的幻影顺序(firstKeyIdx),然后对于来自同一键的记录,“嵌套”顺序由idx定义):
|
|
3
1
下面是一种基于@SergGr的解决方案的函数/递归方法,该解决方案正确地引入了LinkedHashMap。 给定此输入:
通过以下方式首先准备和聚合数据:
.
|
|
|
Mike Saull · SQL聚合表是否包含类别或记录类型 1 年前 |
|
|
Ikzer · 在javascript中聚合多个值 2 年前 |
|
|
Crystal · ValueError:必须以熊猫为单位生成聚合值 2 年前 |
|
|
Tsaku Graham · 我可以引用其他表上一列的聚合函数吗? 2 年前 |