繁体   English   中英

将RDD转换为PCA的RowMatrix

Transform RDD into RowMatrix for PCA

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我拥有的原始数据如下所示:

RDD数据:

键->索引

1-> 2

1-> 3

1-> 5

2-> 1

2-> 3

2-> 4

如何将RDD转换为以下格式?

键-> index1,index2,index3,index4,index5

1-> 0,1,1,0,1

2-> 1,0,1,1,0

我当前的方法是:

    val vectors = filtered_data_by_key.map( x => {
    var temp = Array[AnyVal]()
    x._2.copyToArray(temp)
    (x._1, Vectors.sparse(filtered_key_size, temp.map(_.asInstanceOf[Int]), Array.fill(filtered_key_size)(1) ))
})

我遇到一些奇怪的错误:

org.apache.spark.SparkException:由于阶段失败而导致作业中止:54.0阶段中的任务3失败了1次,最近一次失败:54.0阶段中的任务3.0丢失(TID 75,本地主机):java.lang.IllegalArgumentException:要求失败

当我尝试使用以下代码调试该程序时:

val vectors = filtered_data_by_key.map( x => {
    val temp = Array[AnyVal]()
    val t = x._2.copyToArray(temp)
    (x._1, temp)
})

我发现temp为空,所以问题出在copyToArray()

我不确定该如何解决。

1 个回复

我不完全明白这个问题。 为什么钥匙很重要? 最大索引值是多少? 在您的代码中,您确实想使用不同数量的键作为索引的最大值,但是我认为这是一个错误。

但我假设最大索引值为5。在这种情况下,我相信这就是您要寻找的内容:

val vectors = data_by_key.map({case(k,it)=>Vectors.sparse(5,it.map(x=>x-1).toArray,
        Array.fill(it.size)(1))})

val rm = new RowMatrix(vectors)

我将索引号减少了一个,因为它们应该以0开头。

错误“要求失败”是由于索引和值向量的大小不同。

6 将DStream转换为RDD

我如何将DStream转换为RDD? 我知道我们可以使用transform或forEachRDD方法来操作forEachRDD底层rdd,但我想在驱动程序中使用rdd。 例如,在QueueStream示例中添加像最后一行一样的队列 ...

7 将rdd转换为pairRDD

这是一个新手问题。 是否有可能将具有动态维度的RDD (key,1,2,3,4,5,5,666,789,...)转换为对象RDD (key,1,2,3,4,5,5,666,789,...)如(key, (1,2,3,4,5,5,666,789,...)) ? 我觉得这应该是超级容易但 ...

8 将RDD转换为Spark DataFrame

我正在尝试从spark2中的rdd创建数据帧。 当我尝试将rdd转换为数据帧时,出现错误,指出以下内容 这是我的代码 ...

9 将DStream转换为RDD

如何将Spark Streaming DStream转换为RDD,以便在Spark Context中使用而不是在Streaming Context中使用? 使用Python。 这是我得到的错误:AttributeError:'TransformedDStream'对象没有属性'forea ...

10 RDD转换为Spark

我有下一个RDD,如下所示: 我目前正在寻找某种方法,它将给定的RDD转换为以下形式: 换句话说,该方法根据初始RDD中的键值创建列表的RDD。 如果某个值不可用,则方法将0放到该位置。 我为接下来的两种方法编写了代码,这些方法用于可执行解决方案。 这种方法有效, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM