scala - 了解 mllib 滑动
问题描述
我知道 Spark Structured Streaming 中的滑动窗口是事件时间的窗口,它具有窗口大小(以秒为单位)和步长(以秒为单位)。
但后来我遇到了这个:
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 的滑动方法是什么意思?Jebrish 的价值观是什么?
解决方案
在文档中sliding
我们可以看到:
通过在它们上传递一个滑动窗口,将其父 RDD 的项目分组到固定大小的块中,从而返回一个 RDD。排序首先基于分区索引,然后是每个分区内项目的排序。[...]
因此,在使用sc.parallelize(1 to 100, 10)
顺序的情况下,将是从 1 到 100 的连续数字。
操作的结果sliding
是一个Array
. 使用 print 将调用该toString
对象的方法,但是,Array
不会覆盖此方法,而是使用其中定义的方法Object
is TypeName@hexadecimalHash
,请参阅如何在不获取“SomeType@2f92e0f4”的情况下打印我的 Java 对象?.
您可以使用map(_.toSeq)
将数组转换为Seq
将覆盖该toString
方法的 a (从而按预期打印列表)。或者您可以使用map(_.mkString(","))
将数组转换为字符串。
使用的结果sliding(3)
将是(按此固定顺序):
1,2,3
2,3,4
5,6,7
...
97,98,99
推荐阅读
- scala - SparkML (Scala) 中的并行训练独立模型
- python - 什么是线性回归模型中的 r 平方?
- html - 为什么标题文本没有与其余内容水平对齐?
- python - Pytest - 无法访问导入的类的属性?
- javascript - 如何使用 Google Scripts 和 Google Sheets 执行笛卡尔连接?
- windows - 来自一个 FOR 循环的变量作为批量嵌套 FOR 循环的路径
- bash - 如何在 init=/bin/bash 的早期引导阶段将标准输出重定向到文件
- angular - 如何将 i18n Angular 应用程序部署到 Netlify?
- kubernetes - How to measure Hyperledger Fabric performance using Hyperledger Caliper in Kubernetes setting
- javascript - Convert object into array of object values