FPGrowth:输入数据未缓存pyspark

时间:2017-12-13 10:30:34

标签: python-3.x apache-spark pyspark spark-dataframe

我正在尝试运行以下示例代码。即使我已经缓存了我的数据,但我得到了#34;输入数据没有缓存pyspark"警告。由于这个问题,我无法对大型数据集使用fp增长算法。

from pyspark.ml.fpm import FPGrowth
from pyspark.sql import SparkSession

"""
An example demonstrating FPGrowth.
Run with:
bin/spark-submit examples/src/main/python/ml/fpgrowth_example.py
"""

if __name__ == "__main__":
    spark = SparkSession\
        .builder\
        .appName("FPGrowthExample")\
        .getOrCreate()

    # $example on$
    df = spark.createDataFrame([
        (0, [1, 2, 5]),
        (1, [1, 2, 3, 5]),
        (2, [1, 2])
        ], ["id", "items"])

    df = df.cache()

    fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6)
    model = fpGrowth.fit(df)

    # Display frequent itemsets.
    model.freqItemsets.show()

    # Display generated association rules.
    model.associationRules.show()

    # transform examines the input items against all the association rules and summarize the
    # consequents as prediction
    model.transform(df).show()


    spark.stop()

1 个答案:

答案 0 :(得分:0)

<强>为什么

因为ml.fpm.FPGrowth将数据转换为RDD并在此RDD上运行mllib.fpm.FPGrowth。 RDD未缓存,这会导致mllib代码中的警告。

你能做些什么

在你的代码中没有。如果您认为这是一个大问题(不应该),请打开JIRA票并创建拉取请求。

  

由于这个问题,我无法对大型数据集使用fp增长算法。

它可能导致不必要的分配和减速,但不应该是限制。如果遇到故障,参数可能需要调整。