1、程序开发调优:避免创建重复的RDD
在Spark程序中,如果需要对同一份数据进行多次操作,应当尽量避免创建重复的RDD。因为每次调用textFile
这样的方法都会从数据源(如HDFS)重新加载数据,并创建一个新的RDD,这会造成不必要的性能开销。
错误的做法:
在以下示例中,对同一个HDFS文件hello.txt
执行了两次textFile
操作,创建了两个RDD(rdd1
和rdd2
),并分别对它们执行了map和reduce操作。
val rdd1 = sc.textFile("hdfs://master:9000/hello.txt")
rdd1.map(...) // 对rdd1执行map操作
val rdd2 = sc.textFile("hdfs://master:9000/hello.txt")
rdd2.reduce(...) // 对rdd2执行reduce操作
这种做法会导致Spark两次从HDFS读取相同的文件,即使这两个RDD随后执行的操作不同,第一次读取和创建RDD的开销也是不必要的。
正确的做法:
评论