O cache ordenado do Spark DataFrame cria trabalho indesejado
Desejo converter um RDD em um DataFrame e quero armazenar em cache os resultados do 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()
Se você não usar umcache
função nenhum trabalho é gerado.Se você usarcache
somente após oorderBy
1 trabalho é gerado paracache
:Se você usarcache
somente após oparallelize
nenhum trabalho é gerado.Porquecache
gerar um emprego nesse caso? Como evitar a geração de empregos decache
(armazenando em cache o DataFrame e sem RDD)?
Editar: Investiguei mais sobre o problema e descobri que sem oorderBy("t")
nenhum trabalho é gerado. Por quê?