Кеширование требует поддержки RDD. Это требует, чтобы мы также знали резервные разделы, и это несколько особенное для глобального порядка: оно запускает задание (сканирование), потому что нам нужно определить границы раздела.

у преобразовать RDD в DataFrame и кэшировать результаты 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 только послеorderBy 1 рабочих мест создано дляcache:Если вы используетеcache только послеparallelize работа не генерируется.

Почемуcache создать работу в этом одном случае? Как я могу избежать создания рабочих местcache (кэширование DataFrame и без RDD)?

редактировать: Я больше исследовал проблему и обнаружил, что безorderBy("t") работа не генерируется. Зачем?

Ответы на вопрос(1)

Ваш ответ на вопрос