【问题标题】:FP-growth - Items in a transaction must be uniqueFP-growth - 交易中的项目必须是唯一的
【发布时间】:2016-05-16 08:04:25
【问题描述】:

我已经在我的计算机中运行了代码,并使用了频繁模式挖掘。我使用 FP-growth,但是 pyspark 抛出错误,我不知道如何解决它,那么使用 pyspark 的人可以帮助我吗?

首先我得到数据

data = sc.textFile(somewhere)

这一步没有错误 然后

transactions = data.map(lambda line: line.strip().split(' '))

接下来是

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

引发错误

An error occurred while calling o19.trainFPGrowthModel.:org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 1.0 failed 1 times, most recent failure: Lost task 1.0 in stage 1.0 (TID 3, localhost): org.apache.spark.SparkException: Items in a transaction must be unique but got WrappedArray(,  ,  A,  ,  Seq,  0xBB20C554Ack,  0xE6A8BA01Win,  0x7D78TcpLen,  20).

我的数据是这样的

 transactions.take(1)

[[u'03/07',
  u' 10',
  u' 22',
  u' 04.439824',
  u' 139',
  u' 1',
  u' 1',
  u' spp_sdf',
  u' SDFCombinationAlert',
  u' Classification',
  u' SenstiveData',
  u' Priority',
  u' 2',
  u' PROTO',
  u' 254',
  u' 197.218.177.69',
  u' 172.16.113.84']]

【问题讨论】:

    标签: apache-spark pyspark apache-spark-mllib


    【解决方案1】:

    嗯,你得到的异常是不言自明的。传递给 FP-growth 的每个存储桶都必须包含一组项目,因此不能有重复项。例如,这不是一个有效的输入:

    transactions = sc.parallelize([["A", "A", "B", "C"], ["B", "C", "A", "A"]])
    FPGrowth.train(transactions, minSupport=0.2, numPartitions=10)
    ## Py4JJavaError: An error occurred while calling o71.trainFPGrowthModel.
    ## ...
    ## Caused by: org.apache.spark.SparkException: 
    ##   Items in a transaction must be unique but got WrappedArray(A, A, B, C).
    

    在将这些项目传递到下游之前,您必须确保这些项目是唯一的。

    unique = transactions.map(lambda x: list(set(x))).cache()
    FPGrowth.train(unique, minSupport=0.2, numPartitions=10)
    

    注意事项

    • 在运行FPGrowth 之前先输入cache 数据是个好主意。
    • 主观上它不是您使用的数据的最佳选择。

    【讨论】:

    • 是的,我找到了问题的根源,我会保证数据的唯一性,非常感谢。
    • 另一个问题,如何将结果保存到本地文件?我尝试了 saveAsTextFile() 和 write(),但它返回错误,谢谢。
    • 有没有可以处理非唯一项的算法?
    猜你喜欢
    • 2020-02-11
    • 2012-12-26
    • 2017-09-20
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多