缓存有序的Spark数据帧会创建不需要的作业

2024-04-18 11:17:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将RDD转换为数据帧,并缓存RDD的结果:

from pyspark.sql import *
from pyspark.sql.types import *
import pyspark.sql.functions as fn

schema = StructType([StructField('t', DoubleType()), StructField('value', DoubleType())])

df = spark.createDataFrame(
    sc.parallelize([Row(t=float(i/10), value=float(i*i)) for i in range(1000)], 4), #.cache(),
    schema=schema,
    verifySchema=False
).orderBy("t") #.cache()
  • 如果不使用cache函数,则不会生成作业。在
  • 如果仅在为cache生成orderBy1个作业之后才使用cacheenter image description here
  • 如果仅在parallelize之后才使用cache,则不会生成作业。在

在这种情况下,cache为什么生成作业? 如何避免cache(缓存数据帧而不使用RDD)的作业生成?在

编辑:我对这个问题进行了更深入的研究,发现没有orderBy("t")就不会生成作业。为什么?在


Tags: 数据fromimportcachesqlvalueschema作业