我是apache spark的新手,并且一直在调查它在项目中的用途。项目的瓶颈之一是我必须将大量不同模型(或具有超参数变量的相同模型)迭代地适应数千次的单个小数据集。每个数据集由100-1000行和约10,000-100,000列附近的某处组成,因此可以在一台机器(或工作节点)上轻松管理单个拟合。好的一点是,这些任务可以彼此隔离执行,因此它们令人尴尬地可并行化。
由于将数据集拆分为可在任何给定时间工作的rdd和大量节点的收益可能有限,看起来让许多工作节点彼此独立地运行比使用它们更有效。让它们一致地操作。一种选择是在我的每个工作节点的内存中缓存相同的数据集,并使它们独立运行以完成必须执行的所有拟合。像HTCondor + cloud scheduler或star-cluster这样的工具似乎能够很好地处理这类任务,但是Apache Spark在其他领域有很多东西可以提供,所以我对它的使用感兴趣整个项目。
我能找到一个很好的答案是apache spark是否具有解决此类问题的功能。这个question似乎解决了一个类似的话题,但是我目前对spark的知识有限,我不能通过查看提到的library的文档告诉我,这是否会帮我解决这个问题。知道这是否是最初工作的正确工具将有助于节省我学习工具的浪费时间,我后来发现它无法实现我所需要的工具。
答案 0 :(得分:1)
它得到了很好的支持,但它肯定不是我们谈论的标准用例。如果您的数据非常小(听起来像是这样),您可以查看使用broadcast
函数使其可供所有工作人员使用,然后构建您想要尝试使用的不同参数的RDD。适合你的模型。然后,您可以map
查看不同的参数,并在群集中的多个节点上训练模型。