我是pyspark和RDDs的新手。如果这个问题很简单,我道歉。你知道吗
我已使用以下代码映射和清理数据:
delay = datasplit.map(lambda x: ((x[33], x[8], x[9]))).filter(lambda x: x[0]!= u'0.00').filter(lambda x: x[0]!= '')
但现在我需要转换成以下输出:
(124, u'"OO""N908SW"')
(432, u'"DL""N810NW"')
其中,当按x[8]和x[9]的组合分组时,第一个是上述x[33]
的和
我已经完成了映射并得到了下面的输出(很接近)
lines = delay.map(lambda x: (float(x[0]), [x[1], x[2]]))
输出:
[(-10.0, [u'OO', u'N908SW']),(62, [u'DL', u'N810NW]), (-6.0, [u'WN', w'N7811F'])]
但是我不知道如何减少或组合x[1]
和x[2]
来创建上面显示的输出。你知道吗
提前谢谢。你知道吗
您可以创建如下所示的密钥,并应用
reduceByKey
,然后映射以获取统一密钥:一般来说,您需要尽可能少的python操作。你知道吗
我将您的代码缩减为一个
map
和一个reduce
。你知道吗不用说,当使用spark数据帧时,这类操作通常运行得更快。你知道吗
相关问题 更多 >
编程相关推荐