鉴于这是有效的:
(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
^
我只是在尝试一些例子而且我无法真正遵循。
答案 0 :(得分:0)
它不起作用,因为iterator
RDD
不是Collection
及其iterator
方法has different signature:
final def iterator(split: Partition, context: TaskContext): Iterator[T]
此RDD的内部方法;将从缓存中读取(如果适用),或以其他方式计算它。用户不应直接调用它,但可用于RDD自定义子类的实现者。
如果您想将RDD
转换为本地Iterator
,请使用toLocalIterator
:
def
toLocalIterator: Iterator[T]
返回包含此RDD中所有元素的迭代器。
rdd1.toLocalIterator
但你可能想要的是RDDFunctions.sliding
- Operate on neighbor elements in RDD in Spark。