理解mllib中的滑动窗口

我知道在Spark结构化流中,滑动窗口是基于事件时间的窗口,它具有窗口大小(以秒为单位)和步长大小(以秒为单位)。

但是后来我遇到了这个:

import org.apache.spark.mllib.rdd.RDDFunctions._sc.parallelize(1 to 100, 10)  .sliding(3)  .map(curSlice => (curSlice.sum / curSlice.size))  .collect()

我不理解这里。没有事件时间,那么sliding方法是做什么的呢?

如果我取消.map行的注释,我会得到这样的结果:

[I@7b3315a5[I@8ed9cf[I@f72203[I@377008df[I@540dbda9[I@22bb5646[I@1be59f28[I@2ce45a7b[I@153d4abb...

使用mllib的sliding方法在简单整数上是做什么的?那些乱码值又是什么意思?


回答:

sliding文档中我们可以看到:

通过在父RDD上滑动窗口,按固定大小块分组项目返回一个RDD。排序首先基于分区索引,然后是每个分区内项目的排序。[…]

所以在使用sc.parallelize(1 to 100, 10)的情况下,顺序将是1到100的连续数字。

sliding操作的结果是一个Array。使用print会调用对象的toString方法,但是Array并没有重写这个方法,而是使用Object中定义的方法,即TypeName@hexadecimalHash,参见如何打印我的Java对象而不得到”SomeType@2f92e0f4″?

你可以使用map(_.toSeq)将数组转换为一个Seq,它会重写toString方法(因此会按预期打印列表)。或者你可以使用map(_.mkString(","))将数组转换为字符串。

使用sliding(3)的结果将是(按此固定顺序):

1,2,32,3,45,6,7...97,98,99

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注