簡體   English   中英

緩存有序Spark DataFrame會創建不需要的作業

[英]Caching ordered Spark DataFrame creates unwanted job

我想將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 在此輸入圖像描述
  • 如果僅在parallelize后才使用cache ,則不會生成任何作業。

為什么cache在這種情況下生成作業? 如何避免cache的作業生成(緩存DataFrame而不是RDD)?

編輯 :我調查了更多的問題,發現沒有orderBy("t")沒有生成任務。 為什么?

我提交了一張錯誤機票 ,因為以下原因關閉了:

緩存需要支持RDD。 這需要我們也知道支持分區,這對於全局訂單來說有點特殊:它觸發作業(掃描),因為我們需要確定分區邊界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM