我是 Spark 的新手,有以下關(guān)于 RDD 和 Dataframes 的高級(jí)問(wèn)題,如果我沒(méi)記錯(cuò)的話,它們是建立在 RDD 之上的:我知道有兩種類型的操作可以在 RDD 上完成,轉(zhuǎn)換和操作。我還了解到,僅當(dāng)對(duì)作為該轉(zhuǎn)換產(chǎn)物的 RDD 執(zhí)行操作時(shí)才執(zhí)行轉(zhuǎn)換。鑒于 RDD 在內(nèi)存中,我想知道是否有可能優(yōu)化這些 RDD 消耗的內(nèi)存量,請(qǐng)看以下示例: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())())我有一個(gè) KafkaDFRaw 數(shù)據(jù)框,我生成了一個(gè)名為 KafkaDF 的新 RDD。然后我希望向這個(gè)新的 RDD 添加列。我應(yīng)該將它們添加到現(xiàn)有的 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))或者我應(yīng)該從上一個(gè)數(shù)據(jù)框創(chuàng)建一個(gè)新的數(shù)據(jù)框嗎?像這樣: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))這對(duì)內(nèi)存優(yōu)化有影響嗎?預(yù)先感謝您的幫助。
Spark RDD 和 Dataframe 轉(zhuǎn)換優(yōu)化
函數(shù)式編程
2023-05-09 14:49:52