我有一个交易清单,用户可以将一个板子从一个站点转移到另一个站点。这是一个数组数组,称为trans
:
Board: User: Station: Action: Time:
[
['1', 'Ana', 'Tribeca', 'check_out', '1:00pm'],
['1', 'Ana', 'Soho' , 'park' , '2:00pm'],
['1', 'Bob', 'Soho' , 'check_out', '3:00pm'],
['1', 'Bob', 'Chelsea', 'park' , '4:00pm'],
['2'...]
]
(例如,董事会'1'在'1:00 pm'由'Tribeca'中的'Ana'签出,在'2:00 pm'停在Soho,然后由'Bob'签出。]]
使用此行代码,我将每个板子分组到其交易中:
board_groups = trans .map(lambda oneTrans: (oneTrans[0], [oneTrans[1], oneTrans[2], oneTrans[3], oneTrans[4]])) .groupByKey() .mapValues(list)
给予:
('1', [ ['Ana' , 'Tribeca' , 'check_out', '1:00pm'], ['Ana' , 'Soho' , 'park' , '2:00pm'], ['Bob' , 'Soho' , 'check_out', '3:00pm'], ['Bob' , 'Chelsea' , 'park' , '4:00pm' ] ]), ('2', ...)
我该如何实现:
('1', ('Ana', [ ['Tribeca', 'check_out', '1:00pm'], ['Soho' , 'park' , '2:00pm'] ] ), ('Bob', [ ['Soho' , 'check_out', '3:00pm'], ['Chelsea', 'park' , '4:00pm' ] ] ) ), ('2'...)
使用Spark的方法?
由于board_groups
的每个值都是一个数组数组,所以我尝试在其上使用mapValue
,因此对于每个值内的每个数组,我都可以map
将每个用户设置为键,然后进行分组用户在一起。但是我无法执行此操作,因为这涉及嵌套并行化调用。
我有一个交易清单,用户可以将一个板子从一个站点转移到另一个站点。这是一个数组,称为trans:板:用户:站:操作:时间:[['1','Ana','Tribeca'...
假设您的数据是