collect 算子操作剖析
collect算子操作的作用:
- 它是一个action操作,会触发任务的运行
- 它会把RDD的数据进行收集之后,以数组的形式返回给Driver端
总结:
-
默认Driver端的内存大小为1G,由参数 spark.driver.memory 设置。
-
如果某个rdd的数据量超过了Driver端默认的1G内存,对rdd调用collect操作,这里会出现Driver端的内存溢出(OOM),所有这个collect操作存在一定的风险,实际开发代码一般不会使用。比如说rdd的数据量达到了10G,rdd.collect这个操作非常危险,很有可能出现driver端的内存不足
-
广播变量也会占用Driver端一定的内存空间。
-
实际企业中一般都会把该参数调大,比如5G/10G等。
可以在代码中修改该参数,如下
new SparkConf().set("spark.driver.memory","5G")