当前位置: 首页 > 知识库问答 >
问题:

Spark Scala UDAF在n天内滚动计数

晏志明
2023-03-14

下面是我的窗口值rollingWindow=window.partitionby(keyColumn).orderby(unix_timestamp).rangebetween(-30243600,currentRow)

我不能用任何其他键对数据进行分区,因为这样计数就会出错。如有任何建议,我将不胜感激

共有1个答案

况弘新
2023-03-14

使用UDAF实现切片窗口可能有点棘手。如果问题是分区很大,那么UDAF也可能有同样的问题,因为您也需要聚合键。

我会先检查滑动窗口的问题,为什么它需要这么长时间才能完成(它完成了吗?)然后转到其他选项。您必须考虑到Spark SQL优化提高了内存/CPU/存储效率,因此先验地使用UDAF处理使用JVM类型的数据不会提高性能。

如果您的分区很大,您可以尝试使用RDS和MapPartition中的迭代器转换。迭代器是一种逐个访问元素集合的方法。迭代器不会一起加载内存中的所有元素集合。相反,迭代器一个接一个地加载元素“。

// AN example of pair RDD
val rdd : RDD[(Int, Array[Double])] = ???

rdd.mapPartitions { iterator : Iterator[(Int, Array[Double])] =>
  // Read the elements one by one with the next method
  // 
  iterator.map(el => (el, windowFunction(buffer))
}
 类似资料:
  • 问题内容: 我有一个AJAX聊天程序,将消息输出到div溢出:自动,所以如果它太长,则会出现滚动条。有没有办法让它在添加新消息时自动滚动到底部?最好使用jQuery? 问题答案: 这将通过以下行完成 这是将滚动条设置为自己元素的高度 只需在每条新消息中都调用它即可:) 干杯

  • 我有以下数据帧(示例): 我想创建一个名为“斜率”的列,它显示每组每n(n=3)天的斜率。这意味着当第一个日期是“2022-09-01”和3天后用于计算时。斜率可以使用“diff_days”(通过与每组第一个值的差异计算)和“值”列来计算。以下是所需的输出: 以下是一些示例计算,可为您提供一个想法: A组前3天:斜率([0,1,3],[2,1,3])=0.43 A组3天后:斜率([5,6,6],[

  • 问题内容: 每当出现新消息时,我都会尝试自动滚动到底部。 我的代码移动了滚动条,但并没有将其移到确切的底部。请帮助。这是我的朋克。 http://plnkr.co/edit/NSwZFtmBYZuW7e2iAUq9 这是我的HTML: 这是javascript: 请也让我知道有角度的方式。我在Internet上发现以下方法无效: 这些是这些指令 问题答案: 您可以为此创建一个指令: http://

  • 问题内容: 这个问题已经有了SQL的答案,并且我能够使用R在R中实现该解决方案。但是,我一直找不到使用来实现它的方法。 问题是要计算滚动日期范围内一列的不同值,例如(如果直接从链接的问题中引用)数据是否如下所示: 如果我们使用3天的日期范围,则结果集将类似于以下内容 这是使用R在R中创建相同数据的代码: 在这方面的任何帮助将不胜感激。谢谢! 编辑1: 这是一个玩具问题,我想将其应用于更大的数据集,

  • 问题内容: 我有一组电子邮件地址和将这些电子邮件地址添加到表中的日期的数据集。电子邮件地址在不同的日期可以有多个条目。例如,如果我有下面的数据集。我希望获得上述日期和3天前之间不同电子邮件的日期和计数。 如果我们使用3的日期周期,结果集将看起来像这样 我可以使用下面的查询来获得日期范围的不同计数,但希望按天获得一个范围的计数,因此我不必手动更新数百个日期的范围。 感谢您的帮助。 问题答案: 测试用

  • 本文向大家介绍python计算N天之后日期的方法,包括了python计算N天之后日期的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python计算N天之后日期的方法。分享给大家供大家参考。具体如下: python计算N天之后的日期,可以自己写成一个函数,想得到几天后的日期都行 输出结果如下: 希望本文所述对大家的Python程序设计有所帮助。