zhe*_*gjw 1 scala apache-spark
我正在尝试使用mapPartitionsfunction 而不是 using map,问题是我想将 anArray作为参数传递,但mapPartitions不作为参数传递Array。如何将数组作为参数传递?
mapPartitions[U: ClassTag](
f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false)
Run Code Online (Sandbox Code Playgroud)
不清楚你在问什么,所以我猜你有一个或多或少看起来像这样的函数:
def foo(iter: Iterator[T], xs: Array[V]): Iterator[U] = ???
Run Code Online (Sandbox Code Playgroud)
并且您想将其传递给mapPartitions.
您有三个选择:
使用匿名函数:
val xs: Array[V] = ???
val rdd: RDD[U] = ???
rdd.mapPartitions(iter => foo(iter, xs))
Run Code Online (Sandbox Code Playgroud)重写foo以支持柯里化:
def foo(xs: Array[V])(iter: Iterator[T]): Iterator[U] = ??? // Rest as before
rdd.mapPartitions(foo(xs))
Run Code Online (Sandbox Code Playgroud)咖喱foo是这样的:
val bar = (iter: Iterator[T]) => foo(iter, xs))
rdd.mapPartitions(bar)
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |