我试图在 Scala 中使用 mapPartitions
但收到以下错误。
[error] found : Unit
[error] required: Iterator[?]
[error] Error occurred in an application involving default arguments.
[error] rdd.mapPartitions(showParts)
我调用
mapPartitions
函数如下。rdd.mapPartitions(showParts)
其中
showParts
函数定义如下。def showParts(iter: Iterator[(Long, Array[String])]) =
{
while (iter.hasNext)
{
val cur = iter.next;
// Do something with cur
}
}
在这里使用
mapPartitions
的正确方法是什么? 最佳答案
问题是您传递给 mapPartitions
的 UDF 必须具有 Iterator[U]
的返回类型。您当前的代码不返回任何内容,因此属于 Unit
类型。
如果您想在执行 RDD
后获得一个空的 mapPartitions
那么您可以执行以下操作:
def showParts(iter: Iterator[(Long, Array[String])]) =
{
while (iter.hasNext)
{
val cur = iter.next;
// Do something with cur
}
// return Iterator[U]
Iterator.empty
}
关于java - 如何在 Scala 中使用 mapPartitions?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31605440/