[问题] AWS执行Python脚本问题

楼主: TZULIU (消费券收购商)   2019-03-01 03:48:48
[背景]
我有80多万笔html档案,每个档案即是一个当初爬过的网页内容,
目前已经产生了一个vocabulary list,
里面是从80多万笔html档案找到的所有字汇,约有20万笔(非英文字符已经删除),
我打算把这个vocabulary list匹配每个html档,再统计每个字汇在该html档中的次数,
最后再把这个80万*20万的资料输出成csv档(SQL还正在摸索),
无奈我的笔电内存撑不住这么大量的资料处理,
所以现在把念头动到AWS上面。
[AWS相关知识]
我目前对于AWS只有非常基础的理解,
S3: 可以在AWS上建立新的bucket并上传档案;可以使用boto3进行一样的工作
EC2: 可以在AWS上建立新的instance并且透过本地电脑连结后使用python;
可以使用boto3进行一样的工作;可以让远端server上传并直接执行Python脚本
[问题]
目前的构想是先把80万笔html档案上传到S3 bucket,
然后借由EC2 instance直接执行我先写好的Python脚本,
待所有档案都读取过后,
一并将资料输出成csv档并储存在S3 bucket底下。
我的问题是:
如果依照我的计画进行,我的个人电脑必须不能中断连结,
否则所有进行中的远端工作全部删除,
除非使用terminal multiplier
作者: bibo9901 (function(){})()   2019-03-01 04:13:00
800k * 200k * (4byte整数) = 640 GB 就算s3能放得下你也没办法真的拿来计算. 事实上这个大矩阵是很sparse的
作者: TakiDog (多奇狗)   2019-03-01 04:14:00
这个数量用csv ...
作者: bibo9901 (function(){})()   2019-03-01 04:15:00
用稀疏矩阵甚至dict存都很容易
楼主: TZULIU (消费券收购商)   2019-03-01 04:31:00
可以请两位高手继续开示怎么做比较好吗?使用AWS RDS?存成dict那之后呼叫的时候,要怎么补上0呢?
作者: ripple0129 (perry tsai)   2019-03-01 05:25:00
你是不是需要的答案是python xxx.py &多&就可以背景执行
楼主: TZULIU (消费券收购商)   2019-03-01 05:32:00
楼上r大说的也是,所以只要连结到instance之后,在commandline 打指令后面加&就行了,但要怎么看log?另一方面,我也是自己第一次处理这么大量的资料,想请问有经验的人到底该怎么做比较好
作者: TitanEric (泰坦)   2019-03-01 11:46:00
nohup python xxx.py &> log& 参考一下&> log是将stdout跟stderr输出到log这个档案
作者: legendmtg (CLANNAD)   2019-03-01 12:07:00
用lambda啊 bucket上档案建立就会自动执行了https://github.com/Miserlou/Zappa用这个设定很简单
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2019-03-01 12:14:00
你需要的是重设计整个架构 可以把更完整的资讯甚至code贴上来 或直接找会的人 既然会输出到CSV 分批处理不就好了有什么理由一定要全部做完一次写入?题外话 要开这样等级的机器很烧钱的....
作者: sma1033 (死马)   2019-03-01 13:39:00
到了这个架构等级,资源的分配很重要,你要获得比PC强的运算效能,就是要花$,而且不便宜如果是AWS上不用钱(或是很便宜)的运算服务,好像不会比不错的个人电脑强多少,要用到比个人电脑强很多的$就很贵
作者: Plot3D (3D做图)   2019-03-02 00:27:00
可以 tmux还不错不推荐nohup
作者: agogoman (cocorosie)   2019-03-03 03:13:00
推Sunal, python可以做streaming, 英文单字平均长度不到5个字, 串成dict, 然后每个html去mapping, mapping完streaming落地, 内存的使用应该比你想像的小很多.

Links booklink

Contact Us: admin [ a t ] ucptt.com