SAS HASH :内存失败时,Hash对象添加了***个项

处理千万观测数据的小伙伴,辛苦等了一两个小时,结果发现以下报错,心如死灰:

 

ERROR: 内存失败时,Hash 对象添加了 4587504 个项。

FATAL: 内存不足,无法执行 DATA 步程序。 在“EXECUTION”阶段中止。
ERROR: 由于内存不足,SAS 系统停止了对该步的处理。
NOTE: 从数据集 WORK.T_QUERY. 读取了 82425420 个观测
WARNING: 数据集 D.T_QUERY 可能不完整。该步停止时,共有 4587503 个观测和 97 个变量。
NOTE: 压缩的数据集 D.T_QUERY 大小减少了 57.82%。
压缩为 23037 页;不压缩将会要求 54614 页。
WARNING: 数据集 D.T_QUERY 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 1:53:01.74
CPU 时间 1:51:28.01

难道HASH不是像传说中那么好用,也受到内存的限制?即使我的电脑内存是128G,仍然无法避免上述错误,那么告诉你一个简单容易忽略的解决办法:

在DATA步最后添加:H.CLEAR();

H是前面定义的hash名称;

就这么简单,问题解决了!!!!!因为H.CLEAR();释放了前面存储的每个KEY及对应的DATA内存,除非单个key和data的内存达到上限,否则再也不会报上述的错啦

转载于:https://www.cnblogs.com/Anni-love-Ferris-wheel/p/7494812.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值