python 2.7:从集合列表中创建字典

时间:2015-12-17 15:31:26

标签: python python-2.7 apache-spark pyspark rdd

执行某些操作后,我得到list set如下:

from pyspark.mllib.fpm import FPGrowth

FreqItemset(items=[u'A_String_0'], freq=303)
FreqItemset(items=[u'A_String_0', u'Another_String_1'], freq=302)
FreqItemset(items=[u'B_String_1', u'A_String_0', u'A_OtherString_1'], freq=301)

我想从这个列表中创建:

  1. RDD

  2. 字典,例如:

    key: A_String_0 value: 303
    key: A_String_0,Another_String_1 value: 302
    key: B_String_1,A_String_0,A_OtherString_1 value: 301
    
  3. 我想继续计算以产生信心和提升

    我尝试执行for循环以从列表中获取每个项目。

    问题是,是否还有另一种更好的方法可以在这里创建rdd和/或列表?

    提前谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 如果您希望RDD根本不收集freqItemsets

    model = FPGrowth.train(transactions, minSupport=0.2, numPartitions=10)
    freqItemsets = model.freqItemsets()
    

    你当然可以parallelize

    result = model.freqItemsets()。collect()    sc.parallelize(结果)

  2. 我不确定你为什么需要这个(看起来像XY problem 但您可以对收集的数据使用理解:

    {tuple(x.items): x.freq for x in result}
    

    {",".join(x.items): x.freq for x in result}
    
  3. 一般来说,如果您想对数据进行进一步的转换,请不要直接在Spark中收集和处理数据。

    另外,您应该看一下Scala API。它已经实现了association rules