如何将参数传递给传递给mapPartitions的函数?
问题描述:
我想使用的,而不是使用map
mapPartitions
功能,问题是,我想传递一个Array
作为参数,但mapPartitions
不采取Array
作为参数。我怎样才能传递数组作为参数?如何将参数传递给传递给mapPartitions的函数?
mapPartitions[U: ClassTag](
f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false)
答
目前还不清楚你问什么,所以我要猜你有一个看起来或多或少像这样的功能:
def foo(iter: Iterator[T], xs: Array[V]): Iterator[U] = ???
,你想将它传递给mapPartitions
。
你有三个选择:
-
可以使用匿名函数:
val xs: Array[V] = ??? val rdd: RDD[U] = ??? rdd.mapPartitions(iter => foo(iter, xs))
-
重写
foo
支持柯里:def foo(xs: Array[V])(iter: Iterator[T]): Iterator[U] = ??? // Rest as before rdd.mapPartitions(foo(xs))
-
库里
foo
这样的:val bar = (iter: Iterator[T]) => foo(iter, xs)) rdd.mapPartitions(bar)
您是否试图访问'mapPartitions'中的数组中的数据?如果是这样,您可以简单地将数组广播为变量。 –
你可以[接受答案](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)或解释为什么它不适合你,所以它可以改进?你也有不少其他问题,回答只是要求被接受。提前致谢。 – zero323