使用其他数据集的部分创建Spark数据集



我试图通过从另一个数据集获取间隔来创建一个新的数据集,例如,考虑dataset1作为输入,dataset2作为输出:

dataset1 = [1, 2, 3, 4, 5, 6]
dataset2 = [1, 2, 2, 3, 3, 4, 4, 5, 5, 6]

我设法使用数组做到这一点,但对于mlib需要一个数据集。

我的代码数组:

def generateSeries(values: Array[Double], n: Int): Seq[Array[Float]] = {
    var res: Array[Array[Float]] = new Array[Array[Float]](m)
    for(i <- 0 to m-n){
        res :+ values(i to i + n)
    }
    return res
}

FlatMap似乎是要走的路,但是一个函数如何在数据集中搜索下一个值?

这里的问题是数组与DataSet没有任何相似之处。数据集是无序的,没有索引,所以从数组的角度考虑是没有帮助的。对于一个Seq,不使用索引和位置来处理它。

因此,要在数据集上表示类似数组的行为,您需要创建自己的索引。这只需将值与我们所表示的"抽象数组"中的位置配对即可完成。

那么你的DataSet的类型将是类似[(Int,Int)]的东西,其中第一个是索引,第二个是值。它们到达时是无序的,因此您需要以更实用的方式重新处理您的逻辑。我不太清楚你想要实现什么,但我希望我给了你一个提示。否则,在我的回答的评论中更好地解释预期结果,我会编辑。

相关内容

  • 没有找到相关文章

最新更新