首页 > 解决方案 > Pyspark:如何计算RDD中每个等距离间隔的数量

问题描述

我有一个RDD[Double],我想将它们RDD分成k相等的间隔,然后计算 RDD 中每个相等距离间隔的数量。

例如,RDD就像[0,1,2,3,4,5,6,6,7,7,10]. 我想把它分成10相等的间隔,所以间隔是[0,1), [1,2), [2,3), [3,4), [4,5), [5,6), [6,7), [7,8), [8,9), [9,10].

如您所见,RDD 的每个元素都将位于其中一个区间内。然后我想计算每个间隔的数量。在这里, 中有一个元素[0,1),[1,2),[2,3),[3,4),[4,5),[5,6),并且两者[6,7)[7,8)都有两个元素。[9,10]有一个元素。

最后我期待一个像array([1,1,1,1,1,1,2,2,0,1].

标签: apache-sparkpyspark

解决方案


尝试这个。我假设范围的第一个元素是包容性的,最后一个是排斥性的。请对此进行确认。例如,当考虑范围 [0,1] 且元素为 0 时,条件是元素 >= 0 且元素 < 1。

for index_upper, element_upper in enumerate(array_range):
  counter = 0
  for index, element in enumerate(rdd.collect()):
    if element >= element_upper[0] and element < element_upper[1] :
      counter +=1
  countElementsWithinRange.append(counter)

print(rdd.collect())
# [0, 1, 2, 3, 4, 5, 6, 6, 7, 7, 10]
print(countElementsWithinRange)
# [1, 1, 1, 1, 1, 1, 2, 2, 0, 0]

推荐阅读