在" R"。
中是否存在类似于汇总功能的东西spark附带的汇总计算(MultivariateStatisticalSummary)仅对数字类型起作用。
我有兴趣获得字符串类型的结果,如前四个最大出现字符串(groupby类型的操作),唯一数量等。
是否有任何预先存在的代码?
如果没有,请建议处理字符串类型的最佳方法。
答案 0 :(得分:1)
我不认为MLlib中有String这样的东西。但如果你要实现它,它可能是一个有价值的贡献。
只计算其中一个指标很容易。例如。按频率排名前4位:
def top4(rdd: org.apache.spark.rdd.RDD[String]) =
rdd
.map(s => (s, 1))
.reduceByKey(_ + _)
.map { case (s, count) => (count, s) }
.top(4)
.map { case (count, s) => s }
或uniques的数量:
def numUnique(rdd: org.apache.spark.rdd.RDD[String]) =
rdd.distinct.count
但是,在一次通过中为所有指标执行此操作需要更多工作。
这些例子假设,如果你有多个"列"对于数据,您已将每列拆分为单独的RDD。这是组织数据的好方法,也是执行洗牌操作所必需的。
分割列的意思是什么:
def split(together: RDD[(Long, Seq[String])],
columns: Int): Seq[RDD[(Long, String)]] = {
together.cache // We will do N passes over this RDD.
(0 until columns).map {
i => together.mapValues(s => s(i))
}
}