scala - 如何使用 spark 生成大量随机整数?

标签 scala apache-spark

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

24324 24324
4234234 4234234
1310313 1310313
...

所以我写了这个 spark 代码(对不起,我是 Spark 和 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()
  }
}

注意:现在我只想每行生成一个数字。

但是好像数字变大的时候程序会报错。对这段代码有什么想法吗?

谢谢。

最佳答案

在 Spark 1.4 中,您可以使用 DataFrame API这样做:

In [1]: from pyspark.sql.functions import rand, randn
In [2]: # Create a DataFrame with one int column and 10 rows.
In [3]: df = sqlContext.range(0, 10)
In [4]: df.show()
+--+
|id|
+--+
| 0|
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
+--+

In [4]: # Generate two other columns using uniform distribution and normal distribution.
In [5]: df.select("id", rand(seed=10).alias("uniform"), randn(seed=27).alias("normal")).show()
+--+-------------------+--------------------+
|id|            uniform|              normal|
+--+-------------------+--------------------+
| 0| 0.7224977951905031| -0.1875348803463305|
| 1| 0.2953174992603351|-0.26525647952450265|
| 2| 0.4536856090041318| -0.7195024130068081|
| 3| 0.9970412477032209|  0.5181478766595276|
| 4|0.19657711634539565|  0.7316273979766378|
| 5|0.48533720635534006| 0.07724879367590629|
| 6| 0.7369825278894753| -0.5462256961278941|
| 7| 0.5241113627472694| -0.2542275002421211|
| 8| 0.2977697066654349| -0.5752237580095868|
| 9| 0.5060159582230856|  1.0900096472044518|
+--+-------------------+--------------------+

关于scala - 如何使用 spark 生成大量随机整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162835/

相关文章:

scala - 这是一个类型检查器错误吗?

scala - 无形HList类型检查

scala - 循环遍历 Map Spark Scala

scala - 如何从 Spark 中的分区 parquet 文件读取特定日期范围

scala - Scala Koans 中的 ===(三等号)运算符是什么?

scala - 在 Scala 中重载通用事件处理程序

python - 在 pyspark 数据框中显示不同的列值

amazon-web-services - 在 Windows 8.1 上启动集群时无法识别 Spark-EC2

java - 如何避免应用程序日志中的 Spark 和 Hive 日志

java - 是否有可能(并且明智地)在 JavaRDD 中执行其他 "spark-submit"?