假设我有一个名为df1的框架,它的大小为1 GB,列有name、age和city。现在我想应用过滤器
df1
df2 = df1.filter(df1.age > 23) df2.collect()
现在我的问题是-Spark遵循什么模式?我的理解是,首先,在内存中加载1GB大小的df 1,检查条件,然后创建df 2。
gfttwv5a1#
什么是懒惰评估,Spark检查我们代码中的操作(收集,显示,保存为文件,保存为文本文件)。如果代码库中存在任何一个Action,则只有Spark会评估Transformations(分组,过滤和Map)。你可能会问这样的问题,为什么Spark要这样做?答案是如果你没有访问转换的输出,这意味着它浪费了内存来执行事务。因为,如果您不打算使用转换的输出执行任何操作,那么我们为什么需要执行转换呢?因此,* 如果您在代码中执行任何Action,则只有Spark执行所有**transformations*。有关详细信息,请参阅以下文档https://medium.com/yavar/apache-spark-transformations-actions-9878ecfc0211
1条答案
按热度按时间gfttwv5a1#
什么是懒惰评估,Spark检查我们代码中的操作(收集,显示,保存为文件,保存为文本文件)。如果代码库中存在任何一个Action,则只有Spark会评估Transformations(分组,过滤和Map)。
你可能会问这样的问题,为什么Spark要这样做?答案是如果你没有访问转换的输出,这意味着它浪费了内存来执行事务。因为,如果您不打算使用转换的输出执行任何操作,那么我们为什么需要执行转换呢?因此,* 如果您在代码中执行任何Action,则只有Spark执行所有**transformations*。
有关详细信息,请参阅以下文档https://medium.com/yavar/apache-spark-transformations-actions-9878ecfc0211