Python 有序单通Pypark

Python 有序单通Pypark,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我试图处理一个csv,其中包含start\u time和end\u time的行,以获取并发会话的数量。我希望通过一次遍历按时间戳排序的数据,并维护一个类似于累加器的变量来保持活动会话的数量,然后执行其他一些处理。为了保持累加器的准确性,我需要确保订单在整个RDD中得到保证(因此我不能使用map或forEach) 数据库足够小,因此没有适合此操作的并行化,但足够大,无法装入RAMtoLocalIterator()实际上做了我想做的事情,但我不知道以后如何执行并行化操作 谢谢 示例代码: conc

我试图处理一个csv,其中包含
start\u time
end\u time
的行,以获取并发会话的数量。我希望通过一次遍历按时间戳排序的数据,并维护一个类似于累加器的变量来保持活动会话的数量,然后执行其他一些处理。为了保持累加器的准确性,我需要确保订单在整个RDD中得到保证(因此我不能使用
map
forEach

数据库足够小,因此没有适合此操作的并行化,但足够大,无法装入RAM
toLocalIterator()
实际上做了我想做的事情,但我不知道以后如何执行并行化操作

谢谢

示例代码:

concurrent = 0 
sessions = sc.parallelize([
    {start_time: '2016-01-01T00:00:00.000Z', end_time: '2016-01-01T00:01:00.000Z'}, ... ]) 
events = sessions.flatMap(separate_end_time).sortBy(lambda x: x['timestamp']) 
    # RDD [{timestamp: '2016-01-01T00:00:00.000Z', change: 1}, 
    #      {timestamp: '2016-01-01T00:10:00.000Z', change: -1}, ...] 

events.forEach(apply_accumulator)   # <- replace this forEach!

def apply_accumulator(session): 
    global concurrent  
    concurrent += change 
    session['concurrent'] = concurrent
concurrent=0
sessions=sc.parallelize([
{开始时间:'2016-01-01T00:00:00.000Z',结束时间:'2016-01-01T00:01:00.000Z'},…)
events=sessions.flatMap(单独的结束时间).sortBy(lambda x:x['timestamp'])
#RDD[{时间戳:'2016-01-01T00:00:00.000Z',更改:1},
#{时间戳:“2016-01-01T00:10:00.000Z”,更改:-1},…]

events.forEach(apply_acculator)#使用ToLocalitor并放弃收集的结果?我想通过添加属性来修改
events
RDD的值,因此我不确定放弃收集的结果将如何工作。我可以使用toLocalIterator创建一个新属性的新数组,然后使用zip和map,但理想情况下,有一种方法可以转换为“非本地迭代器”