[問題] AWS執行Python腳本問題

看板Python作者 (消費券收購商)時間6年前發表 (2019/02/28 19:48), 6年前編輯推噓7(7023)
留言30則, 10人參與, 6年前最新討論串1/1
[背景] 我有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---screen或tmux (目前正在學習中), 想請問各位有AWS經驗的高手們,我這樣的計畫可行嗎? 如果不是很理想,想請問各位高手有沒有更好的做法? 或者是用Lambda(打算學)來做會比較好嗎? [AWS心得] 不用多說,AWS真的功能超多樣、超強, 同時基本的大概念並不複雜, 不過實際學習起來對於我這種非資工背景的新手還是相當吃力。 首先,雖然AWS對於各種服務提供相當詳盡的基本教學文檔, 可是對於專業觀念和名詞(遠端連結、專端機、伺服器管理等等)不熟的使用者(我), 理解真的非常有限。 第二,使用者社群程度太好,很常找不到可以回答新手問題的(相對)簡單答案, 當然,我真心認為我本人的問題比較大,不過, 以「如何讓EC2 instance直接執行python腳本為例」, 我面臨到的狀況是, 大部分google提供的結果都是告訴你再去使用(學)其他的外掛工具, 可是這樣的做法對於我這種超新手其實沒有比較直觀, 也是找了一陣子才發現如何透過command line來執行。 想請問各位高手有學習的方法或心得可以分享嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 168.150.122.93 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1551383330.A.511.html ※ 編輯: TZULIU (168.150.122.93), 03/01/2019 03:49:07 ※ 編輯: TZULIU (168.150.122.93), 03/01/2019 03:49:42 ※ 編輯: TZULIU (168.150.122.93), 03/01/2019 03:52:29

03/01 04:13, 6年前 , 1F
800k * 200k * (4byte整數) = 640 GB 就算s3能放得下
03/01 04:13, 1F

03/01 04:14, 6年前 , 2F
你也沒辦法真的拿來計算. 事實上這個大矩陣是很sparse的
03/01 04:14, 2F

03/01 04:14, 6年前 , 3F
這個數量用csv ...
03/01 04:14, 3F

03/01 04:15, 6年前 , 4F
用稀疏矩陣甚至dict存都很容易
03/01 04:15, 4F

03/01 04:31, 6年前 , 5F
可以請兩位高手繼續開示怎麼做比較好嗎?使用AWS RDS?
03/01 04:31, 5F

03/01 04:33, 6年前 , 6F
存成dict那之後呼叫的時候,要怎麼補上0呢?
03/01 04:33, 6F

03/01 05:25, 6年前 , 7F
你是不是需要的答案是python xxx.py &
03/01 05:25, 7F

03/01 05:26, 6年前 , 8F
多&就可以背景執行
03/01 05:26, 8F

03/01 05:32, 6年前 , 9F
樓上r大說的也是,所以只要連結到instance之後,在command
03/01 05:32, 9F

03/01 05:33, 6年前 , 10F
line 打指令後面加&就行了,但要怎麼看log?另一方面,我也
03/01 05:33, 10F

03/01 05:33, 6年前 , 11F
是自己第一次處理這麼大量的資料,想請問有經驗的人到底該
03/01 05:33, 11F

03/01 05:33, 6年前 , 12F
怎麼做比較好
03/01 05:33, 12F

03/01 11:46, 6年前 , 13F
nohup python xxx.py &> log& 參考一下
03/01 11:46, 13F

03/01 11:47, 6年前 , 14F
&> log是將stdout跟stderr輸出到log這個檔案
03/01 11:47, 14F

03/01 12:07, 6年前 , 15F
用lambda啊 bucket上檔案建立就會自動執行了
03/01 12:07, 15F

03/01 12:07, 6年前 , 16F

03/01 12:07, 6年前 , 17F
用這個設定很簡單
03/01 12:07, 17F

03/01 12:14, 6年前 , 18F
你需要的是重設計整個架構 可以把更完整的資訊甚至code
03/01 12:14, 18F

03/01 12:15, 6年前 , 19F
貼上來 或直接找會的人 既然會輸出到CSV 分批處理不就好了
03/01 12:15, 19F

03/01 12:16, 6年前 , 20F
有什麼理由一定要全部做完一次寫入?
03/01 12:16, 20F

03/01 12:17, 6年前 , 21F
題外話 要開這樣等級的機器很燒錢的....
03/01 12:17, 21F

03/01 13:39, 6年前 , 22F
到了這個架構等級,資源的分配很重要,你要獲得比PC
03/01 13:39, 22F

03/01 13:40, 6年前 , 23F
強的運算效能,就是要花$,而且不便宜
03/01 13:40, 23F

03/01 13:41, 6年前 , 24F
如果是AWS上不用錢(或是很便宜)的運算服務,好像不會比
03/01 13:41, 24F

03/01 13:42, 6年前 , 25F
不錯的個人電腦強多少,要用到比個人電腦強很多的$就很貴
03/01 13:42, 25F

03/02 00:27, 6年前 , 26F
可以 tmux還不錯
03/02 00:27, 26F

03/02 00:29, 6年前 , 27F
不推薦nohup
03/02 00:29, 27F

03/03 03:13, 6年前 , 28F
推Sunal, python可以做streaming, 英文單字平均長度不到
03/03 03:13, 28F

03/03 03:14, 6年前 , 29F
5個字, 串成dict, 然後每個html去mapping, mapping完
03/03 03:14, 29F

03/03 03:15, 6年前 , 30F
streaming落地, 記憶體的使用應該比你想像的小很多.
03/03 03:15, 30F
文章代碼(AID): #1SU3iYKH (Python)