【问题标题】:Apache Spark - Unable to understand scala exampleApache Spark - 无法理解 scala 示例
【发布时间】:2016-01-28 12:03:11
【问题描述】:

我正在尝试了解此位置的 scala 代码。 (我是java背景)。

https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala

我完全迷失在下面的部分

val pairs1 = sc.parallelize(0 until numMappers, numMappers).flatMap { p =>
  val ranGen = new Random
  var arr1 = new Array[(Int, Array[Byte])](numKVPairs)
  for (i <- 0 until numKVPairs) {
    val byteArr = new Array[Byte](valSize)
    ranGen.nextBytes(byteArr)
    arr1(i) = (ranGen.nextInt(Int.MaxValue), byteArr)
  }
  arr1
}.cache()

我知道并行化和平面地图的作用。我不知道 arr1 是如何被初始化的。它是 int 类型还是其他类型的字节数组?另外,它在 for 循环逻辑中做了什么。

【问题讨论】:

    标签: java arrays scala apache-spark


    【解决方案1】:
    var arr1 = new Array[(Int, Array[Byte])](numKVPairs)
    

    只需创建一个大小为 numKVPairs 和类型为 (Int, Array[Byte]) 的数组(一对 int 和字节数组)

    之后,arr1 被随机数据填充。

    【讨论】:

    • 谢谢琼。所以这只是键值对数组。 Key 和 value 也可以是任何数据类型。在某种程度上,它类似于地图。我对吗 ?我不确定Java是否有类似的东西。
    【解决方案2】:
    var arr1 = new Array[(Int, Array[Byte])](numKVPairs)
    

    创建一个类型对 (Int, Array[Byte]) 的数组。也就是说 pair 的第一个元素是 Int 类型,第二个元素是 Array[Byte] 类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2017-12-20
      • 2015-03-20
      • 2016-08-26
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多