Spark重复任务需要驱动程序内存

时间:2018-07-05 13:04:54

标签: apache-spark memory driver

我在spark应用程序中做了一些重复的任务:

  • 我读取了快速压缩的实木复合地板文件并按日期进行过滤
  • 我计算一些统计数据

    dataFrame.filter(date=...)
      .groupyBy(date)
      .agg(sum(when(conditions, $"stat1")))
      .agg(...)
    
  • 我将结果写入CSV文件

在相同的运行时间中,使用不同的日期执行了大约100次。每次迭代都可以毫无问题地运行,但是使用4 Go驱动程序内存时,它在10次迭代后崩溃到内存不足,而在25次迭代后出现8 Go崩溃。对于每次迭代,都从相同的数据帧对象进行计算(例如,拼花地板只能读取一次)。

我看起来每次迭代之间驱动程序内存中都有一些东西。可能是什么解释?

Edit1:这是csv阅读的示例。

spark.read
  .option("header", "true")        
  .csv(source)
  .select(myCols)
  .withColumnRenamed(...)
  .filter($"time" < ...)
  .repartition($"time")
  .write
  .option("compression", "snappy")
  .option("parquet.block.size", 32*1024*1024)
  .mode(SaveMode.Append)
  .partitionBy("time")
  .parquet(target)

0 个答案:

没有答案