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