“数据”这里是一个pyspark数据帧包含比正样本更多的负样本。我试图将阴性样本下采样到(例如)20%。我发现randomSplit方法步骤继续给java.lang.StackOverflowError。这是我的示例代码:
def downsample(data,percent=0.2):
datap = data.filter(data.label==1) # positive samples
datan = data.filter(data.label==0) # negative samples
(data1,_) = datan.randomSplit([percent,1-percent]) # random split the data
ndata = datap.unionAll(data1) # new training dataset
return ndata
datan.randomSplit会给我stackoverflow错误。数据集大约为2 GB。我在emr集群中使用了amazon 5节点(1个主节点,4个从节点),它们都是c4.xlarge。我相信它有足够的内存,因为我可以在没有下采样的情况下完成数据训练。只有当我尝试下采样时,它才会给我stackoverflow错误。我该如何解决?谢谢!