亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spark RDD 和 Dataframe 轉換優化

Spark RDD 和 Dataframe 轉換優化

函數式編程 2023-05-09 14:49:52
我是 Spark 的新手,有以下關于 RDD 和 Dataframes 的高級問題,如果我沒記錯的話,它們是建立在 RDD 之上的:我知道有兩種類型的操作可以在 RDD 上完成,轉換和操作。我還了解到,僅當對作為該轉換產物的 RDD 執行操作時才執行轉換。鑒于 RDD 在內存中,我想知道是否有可能優化這些 RDD 消耗的內存量,請看以下示例:KafkaDF = KafkaDFRaw.select(        KafkaDFRaw.key,        KafkaDFRaw.value,        KafkaDFRaw.topic,        unix_timestamp('timestamp',                       'yyyy-MM-dd HH:mm:ss').alias('kafka_arrival_time')    ).withColumn("spark_arrival_time", udf(time.time, DoubleType())())我有一個 KafkaDFRaw 數據框,我生成了一個名為 KafkaDF 的新 RDD。然后我希望向這個新的 RDD 添加列。我應該將它們添加到現有的 RDD 中嗎?像這樣:decoded_value_udf = udf(lambda value: value.decode("utf-8"))    KafkaDF = KafkaDF\        .withColumn(            "cleanKey", decoded_value_udf(KafkaDF.key))\        .withColumn(            "cleanValue", decoded_value_udf(KafkaDF.value))或者我應該從上一個數據框創建一個新的數據框嗎?像這樣:decoded_value_udf = udf(lambda value: value.decode("utf-8"))    KafkaDF_NEW = KafkaDF\        .withColumn(            "cleanKey", decoded_value_udf(KafkaDF.key))\        .withColumn(            "cleanValue", decoded_value_udf(KafkaDF.value))這對內存優化有影響嗎?預先感謝您的幫助。
查看完整描述

1 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

每當調用操作時,都會執行優化的 dag 并按照計劃使用內存。您可以比較執行計劃以了解:

df.explain(true)
df_new.explain(true)

在兩者之間創建額外的變量來保存轉換不會影響內存利用率。內存要求將取決于數據大小、分區大小、隨機播放等。


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號