我尝试使用pyspark将reduceByKey函数的输出作为相对于键传递的整数的范围。在
我尝试创建一个自定义函数:
def _range(x,y):
return [max(x,y), min(x,y)]
data2 = data_.map(lambda x: (x[u'driverId'] + ',' + x[u'afh'], int(x['timestamp'])))
.reduceByKey(lambda x,y: _range(x,y))
当然,输出是列表中的列表和列表中的列表
我知道解决办法是
^{pr2}$其次是
.reduceByKey(min)
然后将它们组合起来,但我不想执行两个操作
但我希望一次完成,这样应用程序就不会效率低下。我也希望避免首先填充整数列表。 有什么想法吗?数据在RDD中。 谢谢
正确的方法是
combineByKey
定义如下:其中
^{pr2}$pairs
是由于:因为key是动态生成的,所以您不能避免初始的
map
,因为任何*byKey
操作都应该预先知道密钥。值类型转换可以在combineByKey
内执行,但基本上它不会影响数据访问的次数。在相关问题 更多 >
编程相关推荐