由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 怎么用SAS sort 50G的data
相关主题
排序的问题,请问高手用SAS怎么做?which route in SAS is faster?
请问如何把一个数据里所有的变量名后面都加个v?thanks.请教 2 道SAS Adv 真题
问题请教急!SAS adv的一道题,谢谢!
双包子求教:SAS问题请教SAS ADV一道题!
问个SAS问题SAS 求助:如何根据变量值输出变量名
SAS Question请教这个怎么用SAS简单实现
问一个简单的SAS问题,多谢NEED HELP: write do loop in SAS for a project
mysql 问题SAS里怎么根据VALUE来选择需要OUTPUT的COLUMNS
相关话题的讨论汇总
话题: sas话题: sort话题: 50g话题: 排序话题: 文件
进入Statistics版参与讨论
1 (共1页)
d*******1
发帖数: 854
1
用proc sort 被告知内存不足(有4G内存),怎么回事? 不是说SAS在硬盘上操作数据吗?
怎么也要那么多内存?
B******y
发帖数: 9065
2
这个似乎只能用Server来做了,PC还是算了吧。

【在 d*******1 的大作中提到】
: 用proc sort 被告知内存不足(有4G内存),怎么回事? 不是说SAS在硬盘上操作数据吗?
: 怎么也要那么多内存?

g**********t
发帖数: 475
3
用别的程序外排序应该就行了吧。
o****o
发帖数: 8077
4
排序需要额外产生文件。你的原始文件就有50GB,你需要确保你的剩余硬盘空间够大才
行。如果你有100G是剩余的,应该没问题。
其实你应该告诉我们你的文件有多少行,有几个需要排序的变量,文件大小本身并不重要
考虑到performance,根据你的具体问题,可以这么做
先对那个50G的文件,每一行写好行号,就是把_N_标出来,vname=rowID
然后把这个rowID连同需要排序的变量分离出来,这样文件一般会小点,除非你的50G的
文件全都是需要排序的变量组成,那就没辙了。这样大的文件会非常长,排序很慢。
把这个小文件排序后,你的rowID也排好了,然后在set排序好的文件的时候,set
original_file point=rowID就把两个文件链接起来了
我在PC上最大sort过10GB的文件,等了我45分钟。你要sort50GB的,就算你的PC能搞,
估计你也等的不耐烦了
D******n
发帖数: 2836
5
merge sort uses little memory which doesnt grow with the size of the data.

重要

【在 o****o 的大作中提到】
: 排序需要额外产生文件。你的原始文件就有50GB,你需要确保你的剩余硬盘空间够大才
: 行。如果你有100G是剩余的,应该没问题。
: 其实你应该告诉我们你的文件有多少行,有几个需要排序的变量,文件大小本身并不重要
: 考虑到performance,根据你的具体问题,可以这么做
: 先对那个50G的文件,每一行写好行号,就是把_N_标出来,vname=rowID
: 然后把这个rowID连同需要排序的变量分离出来,这样文件一般会小点,除非你的50G的
: 文件全都是需要排序的变量组成,那就没辙了。这样大的文件会非常长,排序很慢。
: 把这个小文件排序后,你的rowID也排好了,然后在set排序好的文件的时候,set
: original_file point=rowID就把两个文件链接起来了
: 我在PC上最大sort过10GB的文件,等了我45分钟。你要sort50GB的,就算你的PC能搞,

D******n
发帖数: 2836
6
如果memory不够大也没办法,我只是记得merge sort可以解决,速度当然就很慢了。

【在 o****o 的大作中提到】
: 排序需要额外产生文件。你的原始文件就有50GB,你需要确保你的剩余硬盘空间够大才
: 行。如果你有100G是剩余的,应该没问题。
: 其实你应该告诉我们你的文件有多少行,有几个需要排序的变量,文件大小本身并不重要
: 考虑到performance,根据你的具体问题,可以这么做
: 先对那个50G的文件,每一行写好行号,就是把_N_标出来,vname=rowID
: 然后把这个rowID连同需要排序的变量分离出来,这样文件一般会小点,除非你的50G的
: 文件全都是需要排序的变量组成,那就没辙了。这样大的文件会非常长,排序很慢。
: 把这个小文件排序后,你的rowID也排好了,然后在set排序好的文件的时候,set
: original_file point=rowID就把两个文件链接起来了
: 我在PC上最大sort过10GB的文件,等了我45分钟。你要sort50GB的,就算你的PC能搞,

N**D
发帖数: 10322
7
sas is never meant for this kind of serious work

【在 d*******1 的大作中提到】
: 用proc sort 被告知内存不足(有4G内存),怎么回事? 不是说SAS在硬盘上操作数据吗?
: 怎么也要那么多内存?

N**D
发帖数: 10322
8
sort with hadoop, 50G is nothing

重要

【在 o****o 的大作中提到】
: 排序需要额外产生文件。你的原始文件就有50GB,你需要确保你的剩余硬盘空间够大才
: 行。如果你有100G是剩余的,应该没问题。
: 其实你应该告诉我们你的文件有多少行,有几个需要排序的变量,文件大小本身并不重要
: 考虑到performance,根据你的具体问题,可以这么做
: 先对那个50G的文件,每一行写好行号,就是把_N_标出来,vname=rowID
: 然后把这个rowID连同需要排序的变量分离出来,这样文件一般会小点,除非你的50G的
: 文件全都是需要排序的变量组成,那就没辙了。这样大的文件会非常长,排序很慢。
: 把这个小文件排序后,你的rowID也排好了,然后在set排序好的文件的时候,set
: original_file point=rowID就把两个文件链接起来了
: 我在PC上最大sort过10GB的文件,等了我45分钟。你要sort50GB的,就算你的PC能搞,

o****o
发帖数: 8077
9
楼主要在工作环境下再装个hadoop估计很麻烦

【在 N**D 的大作中提到】
: sort with hadoop, 50G is nothing
:
: 重要

s*********e
发帖数: 1051
10
none of the above provides any actionable solution.
you should try to index the table before sorting to reduce the demand for
resources.
by the way, did you add "sortsize = max" in the sort procedure?
相关主题
SAS Questionwhich route in SAS is faster?
问一个简单的SAS问题,多谢请教 2 道SAS Adv 真题
mysql 问题急!SAS adv的一道题,谢谢!
进入Statistics版参与讨论
N**D
发帖数: 10322
11
the point is that SAS is outdated.

【在 o****o 的大作中提到】
: 楼主要在工作环境下再装个hadoop估计很麻烦
z****e
发帖数: 2024
12
that's called external sorting. lots of algorithm can be applied by using C
or equivalents.
I guess SAS do the same when physical memory is not large enough. only guess.

【在 D******n 的大作中提到】
: 如果memory不够大也没办法,我只是记得merge sort可以解决,速度当然就很慢了。
d*******1
发帖数: 854
13
这样sort 的文件可以在后面的步骤用by process吗? BTW, 文件有2亿行, 10列,需要对
三列排序

重要

【在 o****o 的大作中提到】
: 排序需要额外产生文件。你的原始文件就有50GB,你需要确保你的剩余硬盘空间够大才
: 行。如果你有100G是剩余的,应该没问题。
: 其实你应该告诉我们你的文件有多少行,有几个需要排序的变量,文件大小本身并不重要
: 考虑到performance,根据你的具体问题,可以这么做
: 先对那个50G的文件,每一行写好行号,就是把_N_标出来,vname=rowID
: 然后把这个rowID连同需要排序的变量分离出来,这样文件一般会小点,除非你的50G的
: 文件全都是需要排序的变量组成,那就没辙了。这样大的文件会非常长,排序很慢。
: 把这个小文件排序后,你的rowID也排好了,然后在set排序好的文件的时候,set
: original_file point=rowID就把两个文件链接起来了
: 我在PC上最大sort过10GB的文件,等了我45分钟。你要sort50GB的,就算你的PC能搞,

d*******1
发帖数: 854
14
一定要在SAS里sort, 因为后面的SAS统计步骤要用by process

【在 N**D 的大作中提到】
: sort with hadoop, 50G is nothing
:
: 重要

d*******1
发帖数: 854
15
i may try index, thanks, folks....

【在 s*********e 的大作中提到】
: none of the above provides any actionable solution.
: you should try to index the table before sorting to reduce the demand for
: resources.
: by the way, did you add "sortsize = max" in the sort procedure?

o****o
发帖数: 8077
16
这个文件不大啊
2亿行,10列的文件,如果都是8位长度的变量,大约不到20GB。如果有50GB的大小,估
计是你的变量长度设置得很长,大量的时间和空间都用来进行I/O操作了
用compress=YES把char var压缩一下
我在我自己的破机器上实验了一下,只用了3个排序变量, 文件本身是6.1GB,排序用
了半个小时
另外SAS的排序算法应该用的是disk-based的那些排序算法,对memory不敏感,不存在
内存不够一说。

【在 d*******1 的大作中提到】
: 这样sort 的文件可以在后面的步骤用by process吗? BTW, 文件有2亿行, 10列,需要对
: 三列排序
:
: 重要

d*******1
发帖数: 854
17
很强大, 我也担心character太长了. 你说的compress=YES是在data step 加进去的吗?

【在 o****o 的大作中提到】
: 这个文件不大啊
: 2亿行,10列的文件,如果都是8位长度的变量,大约不到20GB。如果有50GB的大小,估
: 计是你的变量长度设置得很长,大量的时间和空间都用来进行I/O操作了
: 用compress=YES把char var压缩一下
: 我在我自己的破机器上实验了一下,只用了3个排序变量, 文件本身是6.1GB,排序用
: 了半个小时
: 另外SAS的排序算法应该用的是disk-based的那些排序算法,对memory不敏感,不存在
: 内存不够一说。

s******d
发帖数: 303
18
did you use "out=" in your command?
e.g. proc sort data=AA out=BB;
by ***;
run;
1 (共1页)
进入Statistics版参与讨论
相关主题
SAS里怎么根据VALUE来选择需要OUTPUT的COLUMNS问个SAS问题
Anybody knows Fortran Programming??SAS Question
公司名字怎么用SAS match?问一个简单的SAS问题,多谢
sas question ( you bao zi )mysql 问题
排序的问题,请问高手用SAS怎么做?which route in SAS is faster?
请问如何把一个数据里所有的变量名后面都加个v?thanks.请教 2 道SAS Adv 真题
问题请教急!SAS adv的一道题,谢谢!
双包子求教:SAS问题请教SAS ADV一道题!
相关话题的讨论汇总
话题: sas话题: sort话题: 50g话题: 排序话题: 文件