长时间运行后,火花司机侧运行超出内存

时间:2016-11-25 03:30:58

标签: scala apache-spark spark-dataframe

我得到一个简单的火花应用程序。让我烦恼的是,在运行了大约10个小时后,驱动程序得到了3GB内存的错误,但实际上使用的是4.7GB。 我的逻辑非常简单: 首先获取所有文件路径并将其存储到名为Seq的{​​{1}}中。 接下来,allpathallpath.map(path => upsert(getStatistics(path))函数用于计算该路径下文件的记录数,如下所示:

getStatistics

val parquetDF = sqlContext.read.parquet("/path/to/parquet/files") parquetDF.register("tmp_table") resDF.sqlContext.sql("select count(*) record_num from tmp_table").withColumn(...).withColumn(...) 函数旨在通过分区对mysql数据库中的目标表执行upsert操作:

insert ... on duplicate key...

基本上,我找不到太多东西需要在整个程序中使用驱动程序端存储器。是否有任何其他原因导致使用过多的驱动程序端内存?欢迎任何建议。

PS: spark提交配置:

val sql = """insert into table ...... on duplicate key id = id"""
currentDF.foreachPartition(iter => {
val state = create statement
while(iter.hasNext) {
val row = iter.next()
state.addBatch(sql.format(...))
}
state.executeBatch()
})

0 个答案:

没有答案