GEE task运行 记录
黄师弟:要在for循环内,使用运算,如在for循环内,调用 GET_MESMSA,然后直接导出。(黄师弟的切片代码 : ‘黄师弟 切片代码’)
这样它会在下一次运算时清内存,不会影响下一次运算。
后来我经过实验,表明他的这个想法是错误的。
影响task导出的,不在于是否在task中进行运算,而在于【加载原始影像】
**是的,加载原始影像 是最杀内存的**.
那么,只能把这个最杀内存的一步,放置在map中运行,用GEE自己强大的并行运算解决,解决之后再导出。
用map运算好了的image collection用for导出即可。
【总结,所谓的getinfo等等,不会是task导出失败的原因,真正的原因一定只能靠map等并行运算解决】
同时,对于运算量巨大的导出,建议还是使用本文的方法来做实验和记录,掌握其能正常导出的规律。
************初步方案*************
经过多次测试,我发现 多日合成后导出,往往会有困难
推荐只算逐日的,然后再本地进行多日合成
(我不知道会不会和网速与账号状态有关,同样的算法我在前天计算时,显示‘内部错误’)
20220320测试1:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
发现,纯用MODIS 做5日合成,不加入当日数据,可以导出。测试导出5景,导出至文件夹dongao_test
20220320测试2:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
纯用MODIS 做5日合成,且加入当日数据,可以导出。测试导出5景,导出至文件夹dongao_test_2
20220320测试3:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
纯用MODIS 做5日合成,且加入当日数据,可以导出。测试导出10景,导出至文件夹dongao_test_3
注意,此时在console中已经报错User memory limit exceeded,但是在task中依然可以正常导出
20220320测试4:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
纯用MODIS 做5日合成,且加入当日数据,且加入5日合成VIIRS数据,测试导出10景,导出至文件夹dongao_test_4
注意,此时在console中已经报错User memory limit exceeded,但是在task中依然可以正常导出
加入VIIRS的结果,其缺失值相对于测试3明显改善
20220320测试5:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
测试[新疆地区 边缘简化2000]
纯用MODIS 做5日合成,且加入当日数据,且加入5日合成VIIRS数据,测试导出10景,导出至文件夹dongao_test_5
注意,此时在console中已经报错User memory limit exceeded,但是在task中依然可以正常导出
与测试4相比,速度慢了太多(平均约21.9分钟)。
20220320测试6:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
纯用MODIS 做5日合成,且加入当日数据,且加入5日合成VIIRS数据,测试导出10景,导出至文件夹dongao_test_6
注意,此时在console中已经报错User memory limit exceeded,但是在task中依然可以正常导出
与测试4相比,速度慢了太多(平均约20.2分钟)。建议使用外包矩形来做,这样会获取更多的数据
20220320测试7:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
纯用MODIS 做5日合成,且加入当日数据,且加入5日合成VIIRS数据,测试导出***60***(20210101起)景,导出至文件夹dongao_test_7
注意,此时在console中已经报错User memory limit exceeded,在task中显示Error: Computation timed out. (Error code: 3)
说明:导出60天会失败!建议导出10天,每次提交的任务为10天
20220320测试8:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
纯用MODIS 做5日合成,且加入当日数据,测试导出【5景】,导出至文件夹dongao_test_8
导出4个波段,导出成功,导出时间在16min左右
20220320测试9:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
纯用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,测试导出【10景】(20210201-20210210),导出至文件夹dongao_test_9
测试成功(运行时间约16min)
***20220321 注意:由于代码错误,尚且还没有加入VIIRS,在3/21日10:18重试
重试结果:可以正常导出,平均用时约15min
20220320测试10:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
为测试7的延伸,改输出影像景数为30景
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
用MODIS 做5日合成,且加入当日数据,且加入5日合成VIIRS数据,测试导出***30***(20210130起)景,导出至文件夹dongao_test_10
注意,此时在console中已经报错User memory limit exceeded,在task中显示Error: Computation timed out. (Error code: 3)
说明:导出30天会失败!如果一次向GEE提出过多task请求,反而速度很慢,每个任务都会执行很长时间,不如一次次少提交几个
20220321测试11:[代码:冬奥/获取某日无云积雪覆盖度-MESMA-map版]
为测试7的延伸,改输出影像景数为30景
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
纯用MODIS 做5日合成,且加入当日数据,且加入5日合成VIIRS数据,测试导出***15***(20210201起)景,导出至文件夹dongao_test_11
注意,此时在console中已经报错User memory limit exceeded,在task中可以正常导出
平均用时约15min
20220321测试12:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,测试导出【15景】(20210211-20210225),导出至文件夹dongao_test_9
平均用时约17min
** 后续
在文件夹dongao_test_9内,导入【3景】(20210211-20210228)
在文件夹dongao_test_9内,导入【16景】(20210101-20210116)16景可以正常导出,速度约17分钟
在文件夹dongao_test_9内,导入【15景】(20210117-20210131)
一般的状态的提交之后,会先执行8个左右的task,其他的task运行时间显示<1m,实际是在排队,约20min左右,同一批次的task会集体先后运算结束
经观察,多个task运行,会导致每个任务的执行时间变长,比如出现运行时间>30min的情况
20220321测试13:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[新疆地区 使用包围盒2*7度 [79.88,42.25,91.57,49.19](tip:冬奥地区包围盒4*3度 [113.5,39.5,117.5,42.5])]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,测试导出【15/16景】(20210211-20210225),导出至文件夹dongao_test_9
测试:是否可以【同时】运行多个15task,已知一次性提交30个task是无法运行成功的,
那么如果一个15task提交,紧接着提交下一个15task,实际同时有30个task,但是是否可以同时运行
20220321 14:40提交【15景】(20201101-20201115)
20220321 14:42提交【15景】(20201116-20201130)
20220321 14:43提交【15景】(20201201-20201215)
20220321 14:45提交【16景】(20201216-20201231)
20220321测试14:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[***冬奥地区***包围盒4*3度 [113.5,39.5,117.5,42.5]]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,测试导出【15/16景】,导出至文件夹dongao_test_12
测试:是否可以【同时】运行多个15task,已知一次性提交30个task是无法运行成功的,
那么如果一个15task提交,紧接着提交下一个15task,实际同时有30个task,但是是否可以同时运行
20220321 17:01提交【15景】(20201101-20201115)
情况不妙,已经失败了几个Error: Execution failed; out of memory. (Error code: 8)。21:49 有几个task正常导出,我之前换了个VPN的服务器
20220321 17:03提交【15景】(20201116-20201130)导出失败,运行时网可能也有问题,task失败,显示Error: Execution failed; out of memory. (Error code: 8)
20220321 17:04提交【15景】(20201201-20201215)导出失败,运行时网可能也有问题,task失败,显示Error: Execution failed; out of memory. (Error code: 8)
20220321 17:05提交【16景】(20201216-20201231)导出失败,运行时网可能也有问题,task失败,显示Error: Execution failed; out of memory. (Error code: 8)
20220321 17:06提交【15景】(20210101-20210115)导出失败,运行时网可能也有问题,task失败,显示Error: Execution failed; out of memory. (Error code: 8)
20220321 17:07提交【16景】(20210116-20210131)导出失败,运行时网可能也有问题,task失败,显示Error: Execution failed; out of memory. (Error code: 8)
20220321 17:08提交【15景】(20210201-20210215)导出失败,运行时网可能也有问题,task失败,显示Error: Execution failed; out of memory. (Error code: 8)
20220321 17:09提交【13景】(20210216-20210228)我将任务取消了,看来密集地提交task不可取
【综上:连续提交多个task不可取】
20220322测试15:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
与测试11相同,只是研究区从新疆改为冬奥,实际积雪区
测试[***冬奥地区***包围盒4*3度 [113.5,39.5,117.5,42.5]]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,测试导出【15景】(20210201-20210215),导出至文件夹dongao_test_12
注意:从20210201开始,运行15天,这个list会含有一个空数组而导致报错,我不知道是什么原因,可能是某一日modis或VIRRS的问题
测试:20210201开始运行5天(运行成功),20210206开始运行5天(运行成功),20210211开始运行5天(运行失败!)
于是逐步缩小范围,发现20210211那天会输出空数组,跳过那一天!
【注意:如果一次运行5景,真的很快,只要3min左右一张】
测试:从20210211开始运行5天,从20210217开始运行12天
20220322 提交【15景】(20210101-20210115)错误:发现有空数组(空数组报错很快),无法导出!20210101那天为空数组
20220322 12:06提交【15景】(20210102-20210116)
发现:20210119为空数组
20220322 12:14提交【2景】(20210117-20210118)成功导出,且运行速度较快(约5min)
20220322 12:15提交【12景】(20210119-20210131)成功导出,每个task约5min
20220322 12:20提交【12景】(20201101-20201109)(因为20201110-20201115都有了)导出成功,约6min
20220322 13:53提交【15景】(20211116-20211130)导出成功,约7min
20220322 13:55提交【15景】(20211201-20211215)导出失败!!!
20220322 14:28提交【16景】(20211216-20211231)导出失败!!!
【总结导出失败原因,可能总结以下规律:
1、若紧接着(小于等于2min)上一个提交的task,则导出失败,超出内存
2、若上一个task已经出现超出内存提示,则下一个task也会失败
3、只要出现Attempted X time,只要尝试次数大于1,那么一定失败。且大概率同批次的所有任务都会失败】
20220322 18:12提交【15景】(20201201-20201215)
导出成功,平均用时约10min
20220322 18:30提交【16景】(20201216-20201231) 在提交此任务时,上一个任务已经有导出成功的了
导出成功,平均用时约12min
20220322测试16:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[***青藏高原1区***包围盒5*5度 [99,33,104,38]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,导出至文件夹dongao_test_13
20220322 21:32提交【14景】(20210201-20210214)平均用时约11min
20220322 22:02提交【14景】(20210215-20210228)平均用时约14min
20220322 22:21提交【15景】(20210101-20210115)平均用时约16min
20220322 22:50提交【16景】(20210116-20210131)平均用时约13min
20220323 9:35提交【15景】(20201101-20201115)平均用时约15min
20220323 10:09提交【15景】(20201116-20201130)此时,上一步已经有不少task已经完成了。平均用时约14min
20220323 10:35提交【15景】(20201201-20201215)平均用时约14min
20220323 10:55提交【16景】(20201216-20201231)此时,还在运行上上个任务,上个任务还未开始。平均用时约15min
20220323测试17:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[***青藏高原2区***包围盒6*5度 [88.3,27.5,94.5,32.5]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,导出至文件夹dongao_test_14
20220323 12:02提交【15景】(20201101-20201115)导出成功,平均用时约22min
20220323 14:02提交【15景】(20201116-20201130)导出成功,平均用时约22min
20220323 14:37提交【15景】(20201201-20201215)导出成功,平均用时约22min
20220323 15:01提交【16景】(20201216-20201231)导出成功,平均用时约22min
20220323 15:53提交【16景】(20210101-20210116)导出成功,平均用时约22min
20220323 16:28提交【15景】(20210117-20210131)导出成功,平均用时约22min
20220323 16:51提交【14景】(20210201-20210214)此时才算到20201124。导出成功,平均用时约22min
20220323 19:05提交【14景】(20210215-20210228)导出成功,平均用时约22min
20220323测试18:[代码:冬奥/获取某日无云覆盖度_雪植水土MESMA_map法]
测试[***东北***包围盒5*5度 [123.5,44,128.5,49]
用MODIS 做5日合成,且加入当日数据,【且加入5日合成VIIRS数据】,导出至文件夹dongao_test_15
20220323 21:39提交【15景】(20201101-20201115)导出成功,平均用时约22min
20220323 22:36提交【15景】(20201116-20201130)导出成功,平均用时约22min
20220324 9:35提交【15景】(20201201-20201215)
20220324 10:02提交【16景】(20201216-20201231)
20220324 10:24提交【16景】(20210101-20210116)注意,本次task提交和上次时间较接近,约20min