【问题标题】:FPGrowth: Input data is not cached pysparkFPGrowth:输入数据未缓存 pyspark
【发布时间】:2018-05-27 05:05:24
【问题描述】:

我正在尝试运行以下示例代码。即使我已经缓存了我的数据,我仍然收到“输入数据未缓存 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()

【问题讨论】:

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


    【解决方案1】:

    为什么

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

    你能做些什么

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

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

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

    【讨论】:

    • 感谢您的回复。我做了 df_rdd = df.rdd.cache() 然后我也收到了这个警告。警告无关紧要,但正因为如此,我无法将此算法用于大型数据集。 (大意味着不超过 500 个项目)。相同的代码适用于 100 个项目的数据框。我只在使用 ml.fpm.FPGrowth 时遇到这个问题。 mllib.fpm.FPGrowth 正在工作,但我想使用 ml.fpm.FPGrowth。
    猜你喜欢
    • 2017-03-17
    • 2018-01-22
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多