我想知道在安排任务时用于识别火花数据位置的算法? 我们是否需要像YARN这样的集群管理器来执行此操作,如果是,那么调度任务的基础算法是什么?
答案 0 :(得分:0)
这取决于。如果您的数据采用键值对的形式,则Spark通过分区器处理数据位置(通常通过散列键,但您可以定义自定义分区器或使用RangePartitioner根据您的数据优化您的位置)。如果您的数据没有给出密钥,那么通常它只是以每个文件为基础保留数据(如果您有很少的大文件可能会有问题,因为您可能无法以最佳并行性工作)。如果您的数据太分散或太局部化,您可以分别使用重新分区(numPartitions)和合并(numPartitions)来优化您要使用的分区数。
以下是如何创建自定义分区程序的示例: