当前位置: 首页 > 知识库问答 >
问题:

阿帕奇火花 - 无法理解斯卡拉示例

杭柏
2023-03-14

我正在尝试了解这个位置的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 类型还是其他类型 - 字节数组?另外,它在循环逻辑内部做了什么。

共有2个答案

赏梓
2023-03-14
var arr1 = new Array[(Int, Array[Byte])](numKVPairs)

创建类型对(整数、数组[字节])的数组。即对的第一个元素是 Int 类型,第二个元素是数组[字节] 类型。

毛宏达
2023-03-14
var arr1 = new Array[(Int, Array[Byte])](numKVPairs)

只需创建一个大小为<code>numKVPairs</code>且类型为<code>(Int,array〔Byte〕)</code>的数组(<code>Int</code>和字节数组对)

之后,arr1填充随机数据。

 类似资料:
  • 将现有应用程序从Spark 1.6移动到Spark 2.2*(最终)会导致错误“org.apache.spark.SparkExctive:任务不可序列化”。我过于简化了我的代码,以演示同样的错误。代码查询拼花文件以返回以下数据类型:“org.apache.spark.sql.数据集[org.apache.spark.sql.行]”我应用一个函数来提取字符串和整数,返回字符串。一个固有的问题与Sp

  • 我正在用SparkMaster api 7077执行JettyRun和ClusterMode。我将cassandra驱动程序和spark-cassandra连接器的jar传递给spark conf(setjar) 有些时候,如果我重新启动,它是有效的,但有几次,我不得不尝试和尝试,从来没有工作。 我尝试了一些答案,比如将Spark番石榴罐子重命名为19版本,但总是遇到同样的问题。 怎么回事?

  • 我尝试使用I forest https://github.com/titicaca/spark-iforest,的scala实现,但是当我构建时(就像README中报告的< code>mvn clean package),它给我这些错误: 有人知道为什么吗?谢谢 scala版本2.11.12 火花版本2.4.0 maven版本3.5.2 我修改了pom.xml,调整了scala、spark和mav

  • 我在尝试将spark数据帧的一列从十六进制字符串转换为双精度字符串时遇到了一个问题。我有以下代码: 我无法共享txs数据帧的内容,但以下是元数据: 但当我运行这个程序时,我得到了一个错误: 错误:类型不匹配;找到:MsgRow需要:org.apache.spark.sql.行MsgRow(row.getLong(0),row.getString(1),row.getString(2),hex2in

  • 目前我正在研究Apache spark和Apache ignite框架。 这篇文章介绍了它们之间的一些原则差异,但我意识到我仍然不理解它们的目的。 我的意思是,哪一个问题更容易产生火花而不是点燃,反之亦然?