有没有人能解释一下Spark中细粒度转换与粗粒度转换之间的区别?我正在阅读有关RDD(https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)的论文,并且不太清楚粗略的转换如何以有效的方式提供容错。
答案 0 :(得分:14)
细粒度更新将是对数据库中一条记录的更新,而粗粒度更新通常是函数运算符(如用于spark),例如map,reduce,flatMap,join。 Spark的模型利用了这一点,因为一旦它保存了你的小DAG操作(与你正在处理的数据相比很小),只要原始数据仍然存在,它就可以使用它来重新计算。通过细粒度更新,您无法重新计算,因为保存更新的成本可能与保存数据本身一样多,基本上如果您单独更新每个记录数十亿,您必须保存信息以计算每个更新,而粗粒度您可以保存一个更新十亿条记录的功能。显然,这是以不像细粒度模型那样灵活为代价的。