【发布时间】:2018-09-11 14:01:14
【问题描述】:
我正在使用 Spark (2.3.1) 对数据集进行一些处理。出于某种原因,我想在进行计算之前知道我的数据集中是否有足够的数据。
这样做的基本解决方案如下:
int count = myDataset.count();
int threshold = 100;
if (count>threshold){
// compute
}else{
System.out.println("Not enough data to do computation");
}
但它确实效率低下。另一个更有效的解决方案是使用 countApprox() 函数。
int count = (long) (myDataset.rdd().countApprox(1000,0.90).getFinalValue().mean());
但就我而言,它可能会更有效率。
解决这个问题的最佳方法是什么?
注意:
- 我正在考虑迭代我的数据,手动计算我的行数并在达到阈值时停止,但我不确定这是最好的解决方案。
【问题讨论】:
-
你的数据来源是什么?
-
@nakeuh 你能检查一下答案,看看它是否适合你吗?
-
数据小于阈值的概率是多少?后续流程如何?
myDataset是如何创建的? -
数据小于阈值的可能性很小但不可忽略。
myDataset是从数据库中读取的数据集,映射很少(从时间戳中提取星期几,规范化列名,过滤一些行等......)。然后我使用这个数据集来提供一些机器学习算法(MLLIB 或其他),并且我只想在我有足够的输入数据的情况下生成我的 ML 模型。
标签: apache-spark apache-spark-dataset