【问题标题】:prefix span output formatting前缀跨度输出格式
【发布时间】:2018-06-20 14:22:55
【问题描述】:

我正在尝试运行以下示例代码:

import org.apache.spark.mllib.fpm.PrefixSpan

val sequences = sc.parallelize(Seq(
 Array(Array(1, 2), Array(3)),
 Array(Array(1), Array(3, 2), Array(1, 2)),
 Array(Array(1, 2), Array(5)),
 Array(Array(6))
), 2).cache()

val prefixSpan = new PrefixSpan()
 .setMinSupport(0.5)
 .setMaxPatternLength(5)

val model = prefixSpan.run(sequences)
model.freqSequences.collect().foreach { freqSequence =>
  println(
    freqSequence.sequence.map(_.mkString("[", ", ", "]")).mkString("[", ", ", "]") +
", " + freqSequence.freq
  )
}

我需要将 model.freqSequences 格式化为类似于以下的内容(它是一个具有序列和频率的数据框)

|[WrappedArray(2,3)] |  3
|[WrappedArray(1)]   |  2
|[WrappedArray(2,1)] |  1

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    freqSequence.sequence 上使用flatten 并应用toDF 应该会得到您想要的输出

    model.freqSequences.map(freqSequence => (freqSequence.sequence.flatten, freqSequence.freq)).toDF("array", "freq").show(false)
    

    这应该给你

    +------+----+
    |array |freq|
    +------+----+
    |[2]   |3   |
    |[3]   |2   |
    |[1]   |3   |
    |[2, 1]|3   |
    |[1, 3]|2   |
    +------+----+
    

    希望回答对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多