Python 在Spark Streaming中通过多个按键组合减少

Python 在Spark Streaming中通过多个按键组合减少,python,apache-spark,mapreduce,pyspark,spark-streaming,Python,Apache Spark,Mapreduce,Pyspark,Spark Streaming,我有一个spark的工作,听动觉流,并对其进行聚合。DStream中的RDD具有如下结构- {“姓名”:“abc”,“性别”:“M”,“年龄”:25,“分数”:2} 我想计算不同组合键的所有点的总和,例如,姓名、性别、年龄、性别、年龄、姓名等 我现在的做法如下- count_by_name = instream.map(lambda x: (x.get('name'), x.get('points'))).reduceByKey(lambda x, y: x[1]+y[1]) count_by_

我有一个spark的工作,听动觉流,并对其进行聚合。DStream中的RDD具有如下结构- {“姓名”:“abc”,“性别”:“M”,“年龄”:25,“分数”:2}

我想计算不同组合键的所有点的总和,例如,姓名、性别、年龄、性别、年龄、姓名等

我现在的做法如下-

count_by_name = instream.map(lambda x: (x.get('name'), x.get('points'))).reduceByKey(lambda x, y: x[1]+y[1])
count_by_age = instream.map(lambda x: (x.get('age'), x.get('points')).reduceByKey(lambda x, y: x[1] + y[1])
count_by_age_and_sex = instream.map(lambda x: (x.get('age')+'_'+x.get('sex'), x.get('points'))).reduceByKey(lambda x, y: x[1]+y[1])
每把钥匙都是如此。但这显然不是一个优雅的方式,因为可以有更多的键和更多的组合。我必须为每个组合编写一个单独的减速机


有没有更好的方法可以帮助实现这一点,那就是代码的并行化或模块化?

你可以看看熊猫库,它可以进行所有类型的分组和计算。你现在所做的看起来不像是有效的Spark代码…@zero323它的python代码,考虑到“instream”是一个数据流。有什么问题吗?嗯,它看起来或多或少(不包括
byKey
part)像个问题(它不是关联的),但老实说,我甚至不知道你在这里想做什么。你的意思是
reduceByKey
?@zero323谢谢,用reduceByKey编辑了这个问题。你可以看看熊猫库,它可以进行各种分组和计算。你现在正在做的事情看起来不像是有效的Spark代码…@zero323它的python代码,考虑到“instream”是一个数据流。有什么问题吗?嗯,它看起来或多或少(不包括
byKey
part)像个问题(它不是关联的),但老实说,我甚至不知道你在这里想做什么。你是说
reduceByKey
?@zero323谢谢,用reduceByKey编辑了这个问题