2015-10-20 294 views
-1

我想使用的,而不是使用mapmapPartitions功能,问题是,我想传递一个Array作为参数,但mapPartitions不采取Array作为参数。我怎样才能传递数组作为参数?如何将参数传递给传递给mapPartitions的函数?

mapPartitions[U: ClassTag](
    f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false) 
+0

您是否试图访问'mapPartitions'中的数组中的数据?如果是这样,您可以简单地将数组广播为变量。 –

+0

你可以[接受答案](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)或解释为什么它不适合你,所以它可以改进?你也有不少其他问题,回答只是要求被接受。提前致谢。 – zero323

回答

2

目前还不清楚你问什么,所以我要猜你有一个看起来或多或少像这样的功能:

def foo(iter: Iterator[T], xs: Array[V]): Iterator[U] = ??? 

,你想将它传递给mapPartitions

你有三个选择:

  1. 可以使用匿名函数:

    val xs: Array[V] = ??? 
    val rdd: RDD[U] = ??? 
    
    rdd.mapPartitions(iter => foo(iter, xs)) 
    
  2. 重写foo支持柯里:

    def foo(xs: Array[V])(iter: Iterator[T]): Iterator[U] = ??? // Rest as before 
    
    rdd.mapPartitions(foo(xs)) 
    
  3. 库里foo这样的:

    val bar = (iter: Iterator[T]) => foo(iter, xs)) 
    
    rdd.mapPartitions(bar)