如何使用火花生成随机整数数额巨大? [英] How to use spark to generate huge amount of random integers?

查看:202
本文介绍了如何使用火花生成随机整数数额巨大?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要大量的随机数,每行一个。结果应该是这样的:

I need lots of random numbers, one per line. The result should be something like this:

24324 24324
4234234 4234234
1310313 1310313
...

所以我写了这个火花code(对不起,我是新来的星火和Scala):

So I wrote this spark code (Sorry I'm new to Spark and scala):

import util.Random

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

object RandomIntegerWriter {
  def main(args: Array[String]) {
    if (args.length < 2) {
      System.err.println("Usage: RandomIntegerWriter <num Integers> <outDir>")
      System.exit(1)
    }
    val conf = new SparkConf().setAppName("Spark RandomIntegerWriter")
    val spark = new SparkContext(conf)
    val distData = spark.parallelize(Seq.fill(args(0).toInt)(Random.nextInt))
    distData.saveAsTextFile(args(1))
    spark.stop()
  }
}

注:现在我只是想生成每行一个数

Notes: Now I just want to generate one number per line.

但似乎当数数越大,程序会报告错误。这片code的任何想法?

But it seems that when number of numbers gets larger, the program will report an error. Any idea with this piece of code?

感谢您。

推荐答案

尝试

val distData = spark.parallelize(Seq[Int](), numPartitions)
  .mapPartitions { _ => {
    (1 to recordsPerPartition).map{_ => Random.nextInt}.iterator
  }}

这将创建一个在驾驶员侧的空集合,但生成者侧许多随机整数。记录总数为: numPartitions * recordsPerPartition

这篇关于如何使用火花生成随机整数数额巨大?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆