按键计算不同的值

时间:2016-02-23 16:11:33

标签: apache-spark key distinct pyspark

我是新手,知道下面的命令。它们按键计算值,按键列出值。

dayToHostPairTuple.countByKey()
dayToHostPairTuple.groupByKey()

是否有任何简单的countByKey替代方法,它只能按键计算不同的值?

######################################### ==

下面的代码适合我。它基于我收到的答案。

dayToHostPairTuple = access_logs.map(lambda log: (log.date_time.day, log.host))
dayToHostPairTuple=dayToHostPairTuple.sortByKey()
print dayToHostPairTuple.distinct().countByKey()

2 个答案:

答案 0 :(得分:5)

假设值可以播放,您可以将distinctcountByKey

一起使用
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

相关问题