当使用randomSplit
将大数据集(279,994,258行)分为2部分时,我遇到了一个奇怪的行为,即下面的断言失败了。
我想知道为什么以及是否有一种方法可以确保将数据帧分为2个子集,这些子集在重组后构成初始数据集而没有任何丢失或重叠。
或者,如果我在对下面的代码段进行编码时缺少某些内容。
val dataset = spark.table(tableLoc)
val datasetCnt = dataset.count()
val splits = dataset.randomSplit(Array(0.5, 0.5), seed = 11L)
val datasetPart1 = splits(0)
val datasetPart1Cnt = datasetPart1.count()
val datasetPart2 = splits(1)
val datasetPart2Cnt = datasetPart2.count()
assert (datasetCnt == datasetPart1Cnt + datasetPart2Cnt)
我正在使用Spark 2.4