5

我在 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。并且每次都应该是随机rdd1的。rdd2我试过这样:

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

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

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

我明白了

类型错误:不可散列的类型:'dict'

4

1 回答 1

6

两个都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可以在这里使用的方法。

备注

于 2015-09-30T04:17:21.270 回答