我们有一个Apache Spark 1.4.0集群,我们想从HDFS中加载一组350个镶木地板文件中的数据。目前,当我们尝试运行我们的程序时,我们会得到一个" OutOfMemory Error"司机方。 分析Executor和驱动程序,我们注意到在操作期间,当驱动程序内存不断增加时,执行程序内存保持不变。 对于每个镶木地板文件,我们按如下方式加载数据:
sqlContext.read().format(PARQUET_OUT_TYPE).load("path").toJavaRDD(mappingFunction)
然后,我们通过" union"加入RDD。然后我们合并它们
partitions.reduce((r1,r2) -> r1.union(r2).coalesce(PARTITION_COUNT))
对我来说真正奇怪的是执行程序内存在加载阶段保持不变(当我希望看到它增加&导致节点读取数据的原因)并且驱动程序内存不断增加(当我期望它保持不变,因为它不应该加载到驱动程序内存中。)
我们加载数据的方式有问题吗?能否请您解释如何从拼花地板中同时读取数据?
由于
答案 0 :(得分:0)
OOM是由镶木地板元数据而非数据引起的。
由于