apache-spark - RDD滑动错误不理解
问题描述
鉴于这有效:
(1 to 5).iterator.sliding(3).toList
那为什么这不起作用呢?
val rdd1 = sc.parallelize(List(1,2,3,4,5,6,7,8,9,10), 3)
val z = rdd1.iterator.sliding(3).toList
我收到以下错误并尝试应用修复,但这也不起作用!
notebook:3: error: missing argument list for method iterator in class RDD
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `iterator _` or
`iterator(_,_)` instead of `iterator`.
val z = rdd1.iterator.sliding(3).toList
^
我只是在尝试示例,而我无法真正遵循。
解决方案
它不起作用,因为iterator
RDD
is not aCollection
并且它的iterator
方法具有不同的签名:
final def iterator(split: Partition, context: TaskContext): Iterator[T]
此 RDD 的内部方法;如果适用,将从缓存中读取,或者以其他方式计算它。这不应该由用户直接调用,但可用于 RDD 的自定义子类的实现者。
如果要转换RDD
为本地Iterator
使用toLocalIterator
:
定义
toLocalIterator: Iterator[T]
返回包含此 RDD 中所有元素的迭代器。
rdd1.toLocalIterator
但您可能想要的是RDDFunctions.sliding
-在 Spark 中对 RDD 中的相邻元素进行操作。
推荐阅读
- java - 有没有办法使用java检查和释放数据库锁?
- c# - 统一:全方位的重力
- c++ - 如何将 stderr 与输出流相关联
- r - R Markdown:knitr选项结果='隐藏'不起作用
- c# - 如何使用向导在 Visual Studio 2017 中添加项目模板
- .net - MVC .NET CORE - DataAnnotation 的Required(ErrorMessage="Err") 不会出现在服务器端验证中
- postgresql - 如何将我的整个 postgres 数据库复制到另一个 postgres 数据库?
- android - 具有可检查状态的多组项目相互取消选中
- macos - NSWindow 是否可以在没有动画的情况下从全屏模式关闭?
- postgresql - Sequelize Include 在没有结果的情况下不起作用