Apache spark groupBy之后如何将FP增长应用于数据集?
我想在Spark 2.1中使用Spark MLlib中的FP Growth 我的数据只有两列Apache spark groupBy之后如何将FP增长应用于数据集?,apache-spark,pyspark,apache-spark-mllib,apache-spark-2.0,Apache Spark,Pyspark,Apache Spark Mllib,Apache Spark 2.0,我想在Spark 2.1中使用Spark MLlib中的FP Growth 我的数据只有两列item\u group和item 我尝试了以下方法,但无效: sc = SparkSession.builder.appName("Assoziationsanalyse").getOrCreate() hiveCtx = SQLContext(sc) input = hiveCtx.sql("""select * from bosch.input_view"""). groupBy("ite
item\u group
和item
我尝试了以下方法,但无效:
sc = SparkSession.builder.appName("Assoziationsanalyse").getOrCreate()
hiveCtx = SQLContext(sc)
input = hiveCtx.sql("""select * from bosch.input_view""").
groupBy("item_group").
agg(collect_list("item")).
alias("items").
rdd.
map(lambda x : x.items)
model = FPGrowth.train(input, minSupport=0.2, numPartitions=10)
我现在用另一种方法解决了这个问题,我在这里的讨论中发现了这种方法
data=hiveCtx.sql("""select * from bosch.input_view""")
datardd=data.rdd.map(lambda x (x[0],x[1])).groupByKey().mapValues(list).values()
model = FPGrowth.train(datardd, minSupport=0.1, numPartitions=10)
我现在用另一种方法解决了这个问题,我在这里的讨论中发现了这种方法
data=hiveCtx.sql("""select * from bosch.input_view""")
datardd=data.rdd.map(lambda x (x[0],x[1])).groupByKey().mapValues(list).values()
model = FPGrowth.train(datardd, minSupport=0.1, numPartitions=10)
为什么要使用RDD(
data.RDD
)?你使用什么版本的Spark?上面的代码可能非常无效(因为将数据集优化放在一边,groupByKey
)。@JacekLaskowski无法在数据帧上使用map。我正在使用Spark 2.1。如前所述,我对编程非常陌生,尤其是spark。既然FP-Growth在MLlib中,而不是在ML中,它可以与RDD一起工作,而不能与DataFrame一起工作?对不起,如果我说错话了,但那是我的想法。正确。FPGrowth似乎不适用于数据帧,但您至少可以使用Dataset API准备数据,并且只在最后(培训模型之前)将其留给RDD API。为什么要使用RDD(data.RDD
)?你使用什么版本的Spark?上面的代码可能非常无效(因为将数据集优化放在一边,groupByKey
)。@JacekLaskowski无法在数据帧上使用map。我正在使用Spark 2.1。如前所述,我对编程非常陌生,尤其是spark。既然FP-Growth在MLlib中,而不是在ML中,它可以与RDD一起工作,而不能与DataFrame一起工作?对不起,如果我说错话了,但那是我的想法。正确。FPGrowth似乎不适用于数据帧,但您至少可以使用数据集API准备数据,并且只在最后(在训练模型之前)将其留给RDD API。鉴于您的数据集,似乎item_group
是唯一的。对吗?在这种特殊情况下,groupBy
+collect\u list
将是一个简单的转换,以创建FPGrowth期望的数组列。item\u group
表示购物车,在上表中,每个项目组
仅出现一次。您能否粘贴一个更具洞察力的数据集以供将来参考?请粘贴数据集(而不是屏幕截图)。给定数据集,item\u group
似乎是唯一的。对吗?在这种特殊情况下,groupBy
+collect\u list
将是一个简单的转换,以创建FPGrowth期望的数组列。item\u group
表示购物车,在上表中,每个项目组
仅出现一次。您能否粘贴一个更具洞察力的数据集以供将来参考?请粘贴数据集(而不是屏幕截图)。