如何将rdd数据分成两个火花?

时间:2014-11-15 07:46:53

标签: python apache-spark pyspark rdd

我在Spark RDD中有一个数据,我想把它分成两部分,比如0.7。例如,如果RDD看起来像这样:

[1,2,3,4,5,6,7,8,9,10]

我想将其分为rdd1

 [1,2,3,4,5,6,7]

rdd2

[8,9,10]

,比例为0.7。 rdd1rdd2每次都应该是随机的。我试过这种方式:

seed = random.randint(0,10000)
rdd1 = data.sample(False,scale,seed)
rdd2 = data.subtract(rdd1)

它有时有效,但当我的数据包含dict时,我遇到了一些问题。例如,数据如下:

[{1:2},{3:1},{5:4,2;6}]

我得到了

  

TypeError:不可用类型:' dict'

1 个答案:

答案 0 :(得分:5)

RDDs

rdd = sc.parallelize(range(10))
test, train = rdd.randomSplit(weights=[0.3, 0.7], seed=1)

test.collect()
## [4, 7, 8]

train.collect()
## [0, 1, 2, 3, 5, 6, 9]

DataFrames

df = rdd.map(lambda x: (x, )).toDF(["x"])

test, train = df.randomSplit(weights=[0.3, 0.7])

提供randomSplit方法,可在此处使用。

备注