楼主: 爱萌
65147 134

[学习分享] 终于总结了一下,SAS如何处理海量数据和相关解决方法(1)   [推广有奖]

贵宾

学术权威

55%

还不是VIP/贵宾

-

威望
8
论坛币
96939 个
通用积分
12.2915
学术水平
231 点
热心指数
299 点
信用等级
157 点
经验
102615 点
帖子
6194
精华
1
在线时间
2021 小时
注册时间
2007-3-2
最后登录
2021-8-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
相关连接 https://bbs.pinggu.org/thread-475221-1-1.html
在此讨论中也产生了一些新的问题,放在12楼,产生一个新的解决或者说理想的解决方案在讨论中,敬请你的关注:https://bbs.pinggu.org/thread-1188695-1-1.html
第一个问题,这是我爱萌一个人遇到的吗?
不是,有人遇到的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根本不运行 谁有高招啊 那么多数据不能白瞎了啊

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:海量数据 解决方法 thread pinggu Linux 解决方案 linux 企业版 如何

已有 13 人评分经验 威望 学术水平 热心指数 信用等级 收起 理由
eijuhz + 40 + 2 + 2 精彩帖子
boe + 1 + 1 + 1 很有启发,谢谢!
cjboof + 1 + 1 精彩帖子
kyleekin + 1 + 1 + 1 详细,清楚
漫步云端2010 + 1 + 1 + 1 精彩帖子
davil2000 + 1 + 1 + 1 精彩帖子
chaoren2010 + 1 + 1 观点有启发
choastrade + 1 + 1 + 1 精彩帖子
happy_287422301 + 2 精彩帖子
ermutuxia + 1 观点有启发

总评分: 经验 + 40  威望 + 1  学术水平 + 11  热心指数 + 14  信用等级 + 9   查看全部评分

本帖被以下文库推荐

最恨对我说谎或欺骗我的人
沙发
爱萌 发表于 2011-9-25 16:05:36 |只看作者 |坛友微信交流群
第二问题,该用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要快

[wangdering1768]        一个做统计的哥们讲 matlab跟SAS比起来比较像刚学走路的小baby和成人做比较.
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
数据分析师3K + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

最恨对我说谎或欺骗我的人

使用道具

藤椅
爱萌 发表于 2011-9-25 16:07:14 |只看作者 |坛友微信交流群
第三个问题  遇到这种问题,我们该怎么做?
分解为两个步骤了解SAS和相关方法
最恨对我说谎或欺骗我的人

使用道具

板凳
爱萌 发表于 2011-9-25 16:09:03 |只看作者 |坛友微信交流群
SAS里面已经有什么?相关的知识
[JETTKAOS]        SAS的DATA步基本就是按记录处理的,所以理论上多大的数据都能处理。    但是这还需要看具体的算法,某些算法需要整体处理或存储临时数据的话,还是得修改算法。最大记录数量为2**32-1

[whitefire2001]         随机数据,内存的访问速度比硬盘快1000倍以上;批量数据,内存快10倍以上。而1000万个变量能有多大? 双精度才64bit,8byte。 1000万 x  8 = 80 x 1000,000 = 80 M

[tekuaile]对[jettkaos]的回复        SAS的DATA步基本就是按记录处理的,所以理论上SAS就是边读入边处理数据。 但是这还需要看具体的算法,某些算法需要整体处理或存储临时数据的话,那就是只能先都读入再整体处理。

[chitchatla]        SAS在内存中做一些事情,MEMSIZE是你的内存应用的最高限度。

[soporaeternus] 首先是一个现实:十万数量级变量和亿数量级记录的数据规模对于一些行业是很正常的,并且随着时间的积累呈迅速增长。T级别的数据处理已经在国内一些以SAS为核心的BI系统或是分析项目中实施,并有很多经验。
1 SAS是一个统计分析工具软件,SAS管理数据只是一个搬运工,效率有限。大规模的数据预处理、存储、管理、调度,我认为交给数据库来做比较好。数据库+SAS的架构现在也很主流。各尽所能,各取其长而已。 在此前提下,某些意义上的所谓“读入即处理”可以通过数据库“定时定量”吐数据给SAS来实现。总之减少SAS对于数据的I/O操作,仅用其固化的“分析”功能,是一个不错的实现方式和方法。
2 SAS的商用价值在PROC步而非DATA步,编写DATA步时总会有这样的遗憾和无奈。DATA步的本质是逐条处理,理论上可以处理任何规模的数据,实现任何算法。个人感觉DATA步的弱项在于对非当前记录数据信息的记录与操作,这个在一些算法上很无力。所以说SAS只是一个工具,但它不是唯一的工具。
最恨对我说谎或欺骗我的人

使用道具

报纸
爱萌 发表于 2011-9-25 16:12:19 |只看作者 |坛友微信交流群
解决办法
1、统计抽样, 的确有人在用这种方法
2、分而处理,把还量数据分割成小的进行处理(包括分层,分类)
3、借助其他软件,如perl等先初步处理,后用SAS
4、在数据库中进行处理,而后用SAS
5、SAS中hash进行相关处理
6、以上方法的多种结合
最恨对我说谎或欺骗我的人

使用道具

地板
爱萌 发表于 2011-9-25 16:13:16 |只看作者 |坛友微信交流群
支持统计抽样的有
我,爱萌
[420948492]        通过看上面的贴好像自我感觉有误区,其实没有必要处理全部的数据,只要能得到近似正确的结果,还收要考虑效率的
统计学给我我们很多思路
一,选取案例,可以采取抽样的方式,实践证明若在原总体数据存在错误(可以是记录错的)的情况下,抽样的效果是要好于总体的。
二,上面说到有1000个变量,统计学,机器学习给我们提供了选择重要变量的方法,足以让我们解决此类问题。
三,没这个必要,今天你能处理GB级的,TB级的呢,数据挖掘给我们很好的借鉴,数据是以难以想象的速度增长的,计算能力虽然也在升级,但而这种升级来自于数据的压力,所以可以预测的说,计算能力感不上数据,何苦呢

呵呵,你呀,自认为统计的抽样是对的,
抽样的前提是大家独立,具有代表性,
而实际不是这样的,有很多知识需要从大量的数据挖掘,
如GENE microarry数据,基因的个数有5W,而样本只有10多个,你不要告诉我你抽去GENE研究
最恨对我说谎或欺骗我的人

使用道具

7
爱萌 发表于 2011-9-25 16:14:57 |只看作者 |坛友微信交流群
分而处理的有
我,爱萌
[gzjb]        Divide and Control, or use other software for pre-process.

[albert52t]        这的确是一个问题,SAS确实要面临这样的问题,而且不是很好解决。我自己遇到过,只能把数据劈分,分块来。
查了些国外的SAS使用者 ,给出了些建议,但似乎没有根本的解决办法。
[kaizhang] 我处理过80G的数据。我是用SAS软件把数据切割成小的CSV文件,然后利用SQL语言进程处理

[yangchiran]        你可以把这个数据文件拆成几分,并行执行处理
LIBNAME test oracle user=用户名 password=密码 path=数据库名;
%let f1 = 'd:\test\20101028.dat;
filename filec "(&f1)";
data testda ;
  
        infile filec recfm=f lrecl=2000 firstobs=1 obs=10000 ;
        input           @1     id                 $10.
                          @11   name          $30.
                          @41    add             $40.
                                              ;
        run;
/* 第二个并行的SAS*、
LIBNAME test oracle user=用户名 password=密码 path=数据库名;
%let f1 = 'd:\test\20101028.dat;
filename filec  "(&f1)";
data testda ;
  
        infile filec recfm=f lrecl=2000 firstobs=10001obs=20000 ;
        input           @1     id                 $10.
                          @11   name          $30.
                          @41    add             $40.
                                              ;
        run;

[oloolo] Of course, since the data is so huge that you will have to distribute it over thousands of computers and process the summation in parallel.

The so-called Stream Algorithm, originally designed for extremely long tables, also looks promising to solve your puzzles. Under this algorithm, you may not even need to read in all data in order to obtain a strongly consistent result. But it needs custom design per specific case exploiting special stochastic characteristics of the data and also depends what you want to do. There is no universal solution.


[chenjung0825]    1. 分层存储。比如南方销售数据和北方数据分开存入两个数据集。本质上是筛选Obsercation。
2. 按变量分类存储。通过Primary key variable将不同的数据集联系起来。本质上是筛选Variable。
最恨对我说谎或欺骗我的人

使用道具

8
爱萌 发表于 2011-9-25 16:16:16 |只看作者 |坛友微信交流群
其他软件先处理,而后用SAS的有
[chengducde]        前处理千万级或更多的变量或记录可以用Perl或Python,处理成自己理想的数据格式以后再转入SAS运算。我处理过20G 左右的文本文件,应该没有什么问题。补充一下,用的是Ubuntu 64位 Linux系统。
最恨对我说谎或欺骗我的人

使用道具

9
爱萌 发表于 2011-9-25 16:18:00 |只看作者 |坛友微信交流群
数据库先处理,而后用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数据库结合的文章,大家可以参考一下。



最恨对我说谎或欺骗我的人

使用道具

10
爱萌 发表于 2011-9-25 16:19:13 |只看作者 |坛友微信交流群
利用hash解决这个海量的问题的有

[爱萌] hash 表可以快速处理一些数据,大家也可以关注一下这个


[275769263] 书上hash只是把数据的地址映射到内存,再通过地址来访问数据.
最恨对我说谎或欺骗我的人

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 18:41