【问题标题】:Can we apply a Action on another Action in Spark?我们可以在 Spark 中将一个 Action 应用到另一个 Action 上吗?
【发布时间】:2016-05-24 19:55:50
【问题描述】:

我正在尝试运行一些基本的 spark 应用程序。

我们可以将一个动作应用于另一个动作吗?

动作只能应用于Transformed RDD?

  val numbersRDD = sc.parallelize(Array(1,2,3,4,5));
  val topnumbersRDD = numbersRDD.take(2)

 scala> topnumbersRDD.count
 <console>:17: error: missing arguments for method count in    trait             TraversableOnce;
   follow this method with `_' if you want to treat it as a partially       applied function
          topnumbersRDD.count
                        ^

我想知道为什么会出现上述错误。

如果我想找到前 2 个数字的计数,我该怎么办。我需要输出为 2。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    动作可以应用于RDDDataFrametake方法返回一个数组,你可以使用数组的长度或大小来计算元素。

    如果你想选择有条件的数据,你可以使用filter,它会返回一个新的RDD

    【讨论】:

    • 好的.. 我想从 numbersRDD 中获取前 2 个元素,并希望对其应用更多转换。我怎么做 ?我尝试了 numbersRDD.take(2).filter .. 它给我带来了错误
    • 过滤器应该在RDD上完成,例如:numbersRDD.filter
    • 如果你想要数组长度,你可以试试 numbersRDD.take(2).length
    • 我不是在寻找长度。我希望单独保留前 2 个元素,以便单独对这 2 个元素应用一些其他 tarnsformations。
    • 您可以执行 val topnumbersRDD = sc.parallelize(numbersRDD.take(2)) 并创建一个包含前 2 个元素的新 RDD
    猜你喜欢
    • 2012-12-20
    • 2017-11-13
    • 2021-12-15
    • 1970-01-01
    • 2022-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多