SAS如何处理海量数据和相关解决方法
关键词:海量数据存储解决方案
第一个问题,这是我爱萌一个人遇到的吗?
不是,有人遇到的3T,和15TB的数据,1TB=1024GB,如:回贴的人中有,[haikuoxinkong]、[smthny]
还有我现在还是坚持这个观点不是我们一两个遇到,的确有人在做。
详细:
[smthny] 单个文件行数没超过2^63-1(大概9.2 quintillion)的话,用linux企业版加linux版本的SAS
我现在做的数据15T,单个SAS文件最大的1T 因为数据源是UNIX下处理好的SAS文件,所以没有办法用别的东西
如果哪位朋友知道怎么可以工作得快点,麻烦告诉一下,谢谢
[haikuoxinkong] 解决了可以告诉我一下 前两天美国华盛顿大学的教授处理的数据有3个T sas根本不运行 谁有高招啊 那么多数据不能白瞎了啊
第二问题,该用matlab、R 处理如何?
[denver]对某位考虑用matlab、R替代SAS处理海量数据的兄弟的回复 兄弟你正好说反了,MatLAB的强大在于它有很多的工具箱,在每个工具箱中有很多现成的函数,在遇到具体问题的时候,能够最大程度的减少编程的工作。但其运行速度实在不敢恭维。
R的强大在于package的更新速度很快,很多新的统计算法都能在第一时间得到实现,而且语法规范友好,但与其他软件一样,缺点是处理海量数据不太灵便,因为还是要将数据整体读入内存的,一个解决办法是使用RSQL。
SAS的强大之处正在于对于海量数据的处理上,虽然语法恶心点,所以我用SAS只是为了处理数据而已。
[爱萌]对[denver]的补充
matlab是科学计算软件,不是处理数据的也不是处理统计分析的,在国际会议上SAS的结果是不需要多解释的,而matlab需要,
matlab工具箱很多是懒人的工具不是统计学家或者数据分析专家喜欢的,因为它很难改变一些流程和算法,比如神经网络,我知道他有,但我就是自己要写代码,自己可以随时修改代码以符合我的思想,我可以把原来的随机抽样改为分层随机抽样以适合我的数据.当然这个R也有这种弊端.
同时R作为免费的统计软件,很多方法没有经过时间的考验和理论的证明就要用,这对数据分析人员是非常可怕的事情.因为你根本不知道这个方法会产生什么问题.如果做金融就意味着可以赢利也可以赔完,这就是模型风险. 而且R的帮助文件没有相关公式或者统计思想,这对学习者是很霸道的.要么必须接受他的算法和思想,相信他是对的,要么你不用它.
SAS,R,matlab都可以处理大量数据,相对来说SAS快一些, 同时SAS具有很多优秀的功能. 语法比较合理,R的语言是仿照SAS的语言.SAS基于C和C++写的,也可以直接利用,而R利用JAVA相对来说速度慢一些.MATLAB我不知道用什么语言写的,估计应该是C。
[kuhasu]对爱萌的补充 R可是好东西,不像他兄弟S+。Matlab最早是Fortran写的,那是那个年代的产物,后来C出来了,压倒性的优势,matlab也改用c写了。就数据处理来说,很多情况Fortran的速度比C要快
一个做统计的哥们讲 matlab跟SAS比起来比较像刚学走路的小baby和成人做比较.
SAS里面已经有什么?相关的知识
[JETTKAOS] SAS的DATA步基本就是按记录处理的,所以理论上多大的数据都能处理。 但是这还需要看具体的算法,某些算法需要整体处理或存储临时数据的话,还是得修改算法。最大记录数量为2**32-1
随机数据,内存的访问速度比硬盘快1000倍以上;批量数据,内存快10倍以上。而1000万个变量能有多大? 双精度才64bit,8byte。 1000万 x 8 = 80 x 1000,000 = 80 M
SAS的DATA步基本就是按记录处理的,所以理论上SAS就是边读入边处理数据。 但是这还需要看具体的算法,某些算法需要整体处理或存储临时数据的话,那就是只能先都读入再整体处理。
SAS在内存中做一些事情,MEMSIZE是你的内存应用的最高限度。
首先是一个现实:十万数量级变量和亿数量级记录的数据规模对于一些行业是很正常的,并且随着时间的积累呈迅速增长。T级别的数据处理已经在国内一些以SAS为核心的BI系统或是分析项目中实施,并有很多经验。
1 SAS是一个统计分析工具软件,SAS管理数据只是一个搬运工,效率有限。大规模的数据预处理、存储、管理、调度,我认为交给数据库来做比较好。数据库+SAS的架构现在也很主流。各尽所能,各取其长而已。 在此前提下,某些意义上的所谓“读入即处理”可以通过数据库“定时定量”吐数据给SAS来实现。总之减少SAS对于数据的I/O操作,仅用其固化的“分析”功能,是一个不错的实现方式和方法。
2 SAS的商用价值在PROC步而非DATA步,编写DATA步时总会有这样的遗憾和无奈。DATA步的本质是逐条处理,理论上可以处理任何规模的数据,实现任何算法。个人感觉DATA步的弱项在于对非当前记录数据信息的记录与操作,这个在一些算法上很无力。所以说SAS只是一个工具,但它不是唯一的工具。
解决办法
1、统计抽样, 的确有人在用这种方法
2、分而处理,把还量数据分割成小的进行处理(包括分层,分类)
3、借助其他软件,如perl等先初步处理,后用SAS
4、在数据库中进行处理,而后用SAS
5、SAS中hash进行相关处理
6、以上方法的多种结合
通过看上面的贴好像自我感觉有误区,其实没有必要处理全部的数据,只要能得到近似正确的结果,还收要考虑效率的
统计学给我我们很多思路
一,选取案例,可以采取抽样的方式,实践证明若在原总体数据存在错误(可以是记录错的)的情况下,抽样的效果是要好于总体的。
二,上面说到有1000个变量,统计学,机器学习给我们提供了选择重要变量的方法,足以让我们解决此类问题。
三,没这个必要,今天你能处理GB级的,TB级的呢,数据挖掘给我们很好的借鉴,数据是以难以想象的速度增长的,计算能力虽然也在升级,但而这种升级来自于数据的压力,所以可以预测的说,计算能力感不上数据,何苦呢
呵呵,你呀,自认为统计的抽样是对的,
抽样的前提是大家独立,具有代表性,
而实际不是这样的,有很多知识需要从大量的数据挖掘,
如GENE microarry数据,基因的个数有5W,而样本只有10多个,你不要告诉我你抽去GENE研究
数据库先处理,而后用SAS的有
[edwardhuanghz] 大数据量的处理是放在ORACLE,或者放在GP里面,做完数据处理,再用SAS连到oracle上面处理的,一般来讲,千w级的数据量好像问题也不大吧!
[marloneusa]对[edwardhuanghz]的回复 我觉得这里应当考虑的是模型的计算和优化。
[苗条肥仔] 放在ORACLE上的数据,如果你有权限访问的话,直接在SAS的终端上使用ODBC,然后libname一下ODBC就OK了。。
原来们2太服务器,一台是SQL SERVER 一台是SAS。数据经常是转文本然后在导入。后来用ODBC后就很方便了。。。PS:ODBC好像不需要权限吧。只要你有数据库的访问权限就OK
[abelus]我处理过千万条记录级别的数据,SAS完全可以胜任。
[ludunjian] 我们公司的SAS就是这样做的,SAS直接可以连ORACLE的数据库。可以通过SQL过程把数据同步过去,完成数据的赛选。
[yukiooy] 我觉得可以从这几方面入手:
1.基础设施
既然数据量很大,就需要一个数据库吧,第一可以方便管理,第二可以随时提取出自感兴趣的数据;在这里推荐用DB2 Express-C.有多方面的原因,在此不赘述。很多数据库对数据的缓冲等等已经做的完善了,我觉得我们没有必要再去实现一个数据缓冲过程,况且,我们关注的焦点在于数据挖掘。
2.SAS与数据库接口的熟悉
SAS已经有了与数据库的接口,比如DB2,Oracle,MySQL,Dbase等等,这样更加方便了我们编程来处理数据。所以还是需要先了解SAS怎样与数据库结合,然后编程
3.了解数据库的知识是数据挖掘的一个必经之路
数据挖掘所需的数据量之大,前所未有,所以,学习数据挖掘,最好是具备数据库的知识,你会发现这会在研究中助你一臂之力。
我会在SAS研究板块中上传一篇文章,主要讲了SAS怎样与DB2数据库结合的文章,大家可以参考一下。
转载请注明:数据分析 » SAS如何处理海量数据和相关解决方法