为什么在.distinct()之后总是有.collect()?

Mag*_*ggs 0 scala apache-spark apache-spark-sql pyspark

初学者火花。经常看到.distinct()。collect()结构。什么是在distinct()函数之后立即拥有collect()函数的内在原因是什么?

Вит*_*вич 5

distinct是一个转变。这意味着它不会立即执行,而是仅在调用操作时执行。

collect是一个动作。调用该collect方法将导致所有先前的转换都运行。

外触发呼叫distinct后,collect可能会增加你的程序的内存占用,因为该计划也将产生重复的元素。在Spark中,调用distinctafter collect也可能会使整个程序失败。

您可以在此处找到更多说明:https : //dzone.com/articles/getting-lazy-with-scala