Apache spark groupBy之后如何将FP增长应用于数据集?

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

我想在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("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
表示购物车,在上表中,每个
项目组
仅出现一次。您能否粘贴一个更具洞察力的数据集以供将来参考?请粘贴数据集(而不是屏幕截图)。