簡體   English   中英

在amazon EC2或其他服務器上運行python腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM