【发布时间】:2018-02-12 03:51:59
【问题描述】:
我有一个 pyspark 数据框,我想以重复的方式添加随机值以保证相同的输出。我试过设置 numpy.random.seed 和 random.seed,但是下面代码的每次执行都会继续生成不同的随机值序列。
+---+---+---+---+---+
| 7 | 15| 19| 21| 27|
+---------------+---+
| 0 | 1| 0| 0| 0|
| 0 | 0| 0| 1| 0|
| 0 | 0| 0| 1| 0|
| 2 | 0| 0| 0| 0|
| 4 | 0| 3| 0| 0|
| 5 | 0| 25| 0| 0|
| 6 | 2| 0| 0| 0|
这是我当前的实现:
import random
import numpy as np
#set seed
random.seed(1234)
np.random.seed(1234)
#create dataframe
df = sc.parallelize([
[ 0, 1, 0, 0, 0],
[ 0, 0, 0, 1, 0],
[ 0, 0, 0, 1, 0],
[2, 0, 0, 0, 0],
[0, 3, 0, 0, 0],
[ 0, 25,0, 0, 0],
[2, 0, 0, 0, 0],
]).toDF(('7', '15', '19', '21', '27'))
random_df = data.select("*").rdd.map(
lambda x, r=random: [Row(float(r.random() + row)) for row in x]).toDF(data.columns)
在我对上述解决方案的最新尝试中,我将对 random 的引用传递到我的 lambda 表达式中,但是尽管设置了种子,但每次执行我仍然得到不同的值。关于如何解决这一挑战的任何想法或想法?
【问题讨论】:
标签: random pyspark apache-spark-sql