[英]Run a python script on amazon EC2 or other server
我正在研究python中的一個項目,它開始壓倒我的低端Windows桌面,我想詢問有關如何找到我認為需要的額外計算能力的建議。
以下是關於我的項目的一些細節:我正在處理和分析來自網絡的相當大的文本數據庫。 大約10,000個文件,每個平均大約相當於500字左右(盡管這個方法有很多差異)。 第一步是拉動某些關鍵短語並使用GenSim進行相當簡單的相似性分析。 這需要我的電腦一段時間,但如果我很溫柔,它可以處理它。 其次,一旦我確定了候選人的簡短列表,我就會對每個候選文件進行指紋,以更加密切地評估相似性 每個文件都需要對2-10個其他文件進行指紋識別和比較 - 所以它並不是真正的n-to-n比較,需要幾個月的計算機時間我不認為。
這是我的計算機開始掙扎的第二步。 我正在考慮在EC2環境中運行腳本,但當我開始在這里閱讀時,我看到了一個評論效果,有效地這樣做需要一個linux系統管理員級別的復雜性 - 我差不多就是那個級別這個網站的任何成員都可以是復雜的。
那還有另一種選擇嗎? 或者在ES2上運行一個相當簡單的python腳本並不那么難。
腳本中看起來資源最密集的部分如下。 對於每個文本文件,它根據PossDupes_1中的條件(兩者都是列表)從amdt_word_bags修剪中選擇某些文本文件來創建指紋列表。 它使用我在這里找到的指紋生成器模塊: https : //github.com/kailashbuki/fingerprint 。
fingerprints_hold=[]
counter=0
error_count=0
for amdt, sims in zip(amdt_word_bags_trim, PossDupes_1):
counter+=1
if counter%100==0:
print counter
if len(sims)>1:
poss_sim=[sim for sim in sims if sim !=(counter-1)]
fpg_orig = FingerprintGenerator(input_string=amdt)
try:
fpg_orig.generate_fingerprints()
orig_prints=fpg_orig.fingerprints
except IndexError as s:
orig_prints=["small"]
print s
error_count+=1
print error_count
cand_text=[[cand for cand in amdt_word_bags_trim[num]] for num in poss_sim]
cand_text=[''.join(c) for c in cand_text]
fing_cands_hold=[]
for text in cand_text:
fpg_cands = FingerprintGenerator(input_string=text)
try:
fpg_cands.generate_fingerprints()
fing_cands_pre=[int(a[0]) for a in fpg_cands.fingerprints]
fing_cands_hold.append(fing_cands_pre)
except IndexError as s2:
fing_cands_hold.append('small cand')
except TypeError as s3:
fing_cands_hold.append("none")
fingerprints_hold.append([orig_prints, fing_cands_hold])
else: fingerprints_hold.append("no potential matches")
如何使用亞馬遜的彈性地圖減少(EMR)。 這是亞馬遜的hadoop 服務 ,基本上運行在EC2之上。 您可以將數據文件復制到AmazonS3 ,讓EMR集群從那里獲取數據。 您還可以將結果發送到Amazon S3中的文件。
啟動群集時,您可以自定義要使用的EC2實例數以及每個實例的大小。 這樣您就可以定制所需的CPU功率。 完成工作后,可以在不使用時拆除群集。 (避免支付費用)
您也可以通過編程方式執行上述所有操作。 例如python我使用的是非常受歡迎的boto Amazon API 。
要開始學習如何編寫python map reduce jobs,你可以在網上找到幾個帖子來解釋如何去做。 這是一個例子: http : //www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.