use*_*020 5 python apache-spark rdd pyspark
我在Spark RDD中有一个数据,我想将其分为两个部分,比例为0.7。例如,如果RDD如下所示:
[1,2,3,4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
我想将其分为rdd1:
[1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
和rdd2:
[8,9,10]
Run Code Online (Sandbox Code Playgroud)
比例为0.7。在rdd1和rdd2应该是随机的,每次。我这样尝试:
seed = random.randint(0,10000)
rdd1 = data.sample(False,scale,seed)
rdd2 = data.subtract(rdd1)
Run Code Online (Sandbox Code Playgroud)
有时可以,但是当我的数据包含时,dict我遇到了一些问题。例如,数据如下:
[{1:2},{3:1},{5:4,2;6}]
Run Code Online (Sandbox Code Playgroud)
我懂了
TypeError:无法散列的类型:'dict'
都 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]
Run Code Online (Sandbox Code Playgroud)
和 DataFrames
df = rdd.map(lambda x: (x, )).toDF(["x"])
test, train = df.randomSplit(weights=[0.3, 0.7])
Run Code Online (Sandbox Code Playgroud)
提供randomSplit可以在这里使用的方法。
注意事项:
randomSplit用filter每个输出的一个表示RDD。通常,不可能RDDs从单个Spark转换中产生多个结果。有关详细信息,请参见/sf/answers/2307987251/。
您无法使用subtract字典,因为它是内部表达的cogorup,因此需要对象hashable。另请参阅列表作为PySpark的reduceByKey的键
| 归档时间: |
|
| 查看次数: |
3491 次 |
| 最近记录: |