我有以下代码片段,可以使用Spark 1.5.1中相同的HiveContext运行10个sql。
//initialize sparkcontext and hivecontext
//10 SQL that manipulate large data to run one by one
val sqls = Array("insert overwrite x select a join b on c","foo", "bar"....)
for(i <- 0 to 10) {
hiveContext.sql(sqls(i)).collect
}我的问题是,当第n个sql完成时,从资源的角度来看,对下一个sql有什么影响。也就是说,第n个sql使用的资源什么时候释放。例如,第n个sql使用的内存(例如,用于hashjoin的内存)。
发布于 2016-11-17 22:37:36
内存(释放)分配可能取决于正在使用的Spark的版本,但是Spark中的任何查询都被“转换”为一个或多个Spark作业。有关详细信息,请参阅web UI中的SQL选项卡。
由于您没有缓存数据集,因此可以安全地假设在长期运行中没有内存分配。当需要内存时,其他数据集将从内存中清除并丢失。使用Storage和Executors选项卡可查看更多详细信息。
https://stackoverflow.com/questions/40627908
复制相似问题