10
我想一个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
(缓存DataFrame和RDD)的作业生成?
编辑:我调查了更多的问题,发现没有orderBy("t")
没有工作生成。为什么?
随着您的更新澄清问题,我删除了我原来的答案。这是一个有趣的问题,因为orderBy(“t”)被懒惰地评估,因为它应该是和cache()没有orderBy也懒惰地评估,但一起,我也不知道为什么有什么执行纯粹的变压器操作。 – Garren