使用其他数据集

时间:2016-09-28 06:34:59

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

我尝试通过从另一个数据集中获取间隔来创建新数据集,例如,将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似乎是要走的路,但是函数如何搜索数据集中的下一个值?

1 个答案:

答案 0 :(得分:0)

这里的问题是数组与DataSet没有任何相似之处。 DataSet是无序的,没有索引,因此根据数组进行思考不会对您有所帮助。去寻找Seq并且不使用索引和位置来对待它。

因此,要在DataSet上表示类似数组的行为,您需要创建自己的索引。这可以通过将值与&#34;抽象数组&#34;中的位置配对来完成。我们代表。

因此,DataSet的类型将类似于[(Int,Int)],其中第一个是索引,第二个是值。它们将无序到达,因此您需要以更加功能的方式重新编写逻辑。它并不是很清楚你想要实现的目标,但我希望我能给你一个暗示。否则,在我的答案评论中更好地解释预期结果,我将进行编辑。