我是新手,知道下面的命令。它们按键计算值,按键列出值。
dayToHostPairTuple.countByKey()
dayToHostPairTuple.groupByKey()
是否有任何简单的countByKey替代方法,它只能按键计算不同的值?
######################################### ==下面的代码适合我。它基于我收到的答案。
dayToHostPairTuple = access_logs.map(lambda log: (log.date_time.day, log.host))
dayToHostPairTuple=dayToHostPairTuple.sortByKey()
print dayToHostPairTuple.distinct().countByKey()
答案 0 :(得分:5)
假设值可以播放,您可以将distinct
与countByKey
:
dayToHostPairTuple.distinct().countByKey()
或reduceByKey
:
from operator import add
dayToHostPairTuple.distinct().keys().map(lambda x: (x, 1)).reduceByKey(add)
答案 1 :(得分:2)
我建议
dayToHostPairTuple.countApproxDistinctByKey(0.005)
来自帮助:
返回此RDD中每个键的大致不同值的大小。 使用的算法基于streamlib的实现 " HyperLogLog实践:一种状态的算法工程 艺术基数估算算法",可在此处获得。 relativeSD - 相对准确度。较小的值会创建需要更多空间的计数器。它必须大于0.000017