分享

在Spark中怎么实现对一个二维数组的读与写

在spark编程中,遇到了一个问题,需要对一个二维数组进行读写操作,那么怎么才能实现像广播变量和累加器类似的功能呢?

已有(5)人评论

跳转到指定楼层
hello2018 发表于 2018-5-25 18:29:18
楼主对于普通数组应该没有问题吧。

二维数组下面多种方法:
可以循环
[mw_shl_code=scala,true]def dim2B(rows : Int):Array[ArrayBuffer[Int]]={
      val d2 :Array[ArrayBuffer[Int]] = new Array(rows)
      for (k <-0 until rows ) {
        d2(k) = new ArrayBuffer[Int]()
      }
      d2
}
val index = dim2B(10)[/mw_shl_code]
或则for循环
[mw_shl_code=scala,true]var index = new Array[ArrayBuffer[Int]](10)
for(i <- 0 until index.length){
      index(i) = new ArrayBuffer[Int]()
}[/mw_shl_code]
回复

使用道具 举报

星语心愿 发表于 2018-5-25 20:47:32
hello2018 发表于 2018-5-25 18:29
楼主对于普通数组应该没有问题吧。

二维数组下面多种方法:

我可能没表述清楚,问题是这样的,现在有一个两层for循环代码,外层遍历的数据可以构造一个RDD,内层的for循环使用了一个二维数组,关键是这个二维数组是一个全局变量,在其他地方也用到了,所以需要对该二维数组需要广播,并且可以修改。
回复

使用道具 举报

sstutu 发表于 2018-5-28 07:38:16
星语心愿 发表于 2018-5-25 20:47
我可能没表述清楚,问题是这样的,现在有一个两层for循环代码,外层遍历的数据可以构造一个RDD,内层的fo ...

既然普通变量可以,那么二维也可以,只不过数据多一些而已。楼主认为难点在哪里?
回复

使用道具 举报

desehawk 发表于 2018-5-28 19:11:38
星语心愿 发表于 2018-5-25 20:47
我可能没表述清楚,问题是这样的,现在有一个两层for循环代码,外层遍历的数据可以构造一个RDD,内层的fo ...

把二维转换为一维,或则重新装载到别的数据结构中,比如一维数组,list等。
回复

使用道具 举报

星语心愿 发表于 2018-6-1 10:10:34
sstutu 发表于 2018-5-28 07:38
既然普通变量可以,那么二维也可以,只不过数据多一些而已。楼主认为难点在哪里?

你好,能写一个demo吗,我不知道该怎么写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条