【问题标题】:Spark Scala def with yield带有产量的 Spark Scala def
【发布时间】:2018-03-05 11:11:42
【问题描述】:

SO 33655920我遇到了下面的,很好。

rdd = sc.parallelize([1, 2, 3, 4], 2)
def f(iterator): yield sum(iterator)
rdd.mapPartitions(f).collect()

在 Scala 中,我似乎无法以同样的速记方式获得 def。相当于是?我已经搜索并尝试过,但无济于事。

提前致谢。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    yield sum(iterator) 在 Python 中对迭代器的元素求和。在 Scala 中执行此操作的类似方法是:

    val rdd = sc.parallelize(Array(1, 2, 3, 4), 2)
    rdd.mapPartitions(it => Iterator(it.sum)).collect()
    

    【讨论】:

    • 对,也是一个很好的答案。所以我想我可以让 it.sum 更复杂。
    【解决方案2】:

    如果你想对分区中的值求和,你可以写类似

    val rdd = sc.parallelize(1 to 4, 2)
    def f(i: Iterator[Int]) = Iterator(i.sum)
    rdd.mapPartitions(f).collect()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多