çeşni

domuz raporlarını yönetmek için bir Python aracı
Şimdi İndirin

çeşni Sıralama ve Özet

Reklamcılık

  • Rating:
  • Lisans:
  • MIT/X Consortium Lic...
  • Fiyat:
  • FREE
  • Yayıncı adı:
  • Marshall Weir

çeşni Etiketler


çeşni Açıklama

Domuz raporlarını yönetmek için bir Python aracı PIGPY, domuz raporlarını yönetmek için bir Python kütüphanesidir. Domuz, Hadoop'un üstündeki karmaşık ilişkisel işlemler oluşturmak için inanılmaz bir araç seti sağlar, ancak birkaç kayıp parçaya sahiptir: 1) Kolayca birden fazla benzer rapor oluşturmak için ilmek yapımları 2) Orta hesaplamaların önbelleğe alınması 3) Veri Yönetimi ve Temizleme Kodu 4) Rapor Doğruluk için Kolay Test Pypig, bu delikleri bir Hadoop kümesiyle nasıl konuşulacağını bilen ve karmaşık rapor yapıları oluşturabilecek ve yönetebilecek bir Python modülü sağlayarak doldurma girişimidir. h1. Başlarken H2. Kurulum Şu anda gerçek yükleme prosedürü yok. Mevcut gövdeyi kontrol edin ve oradan onunla oynayın. Bildiğim tek gereksinim, Java'nın yürütülebilir dosyasının yolunuzda olması ve 1.6 veya daha yeni olması gerektiğidir. Üst seviyede grunt.py dosyası, bu eğitime ek olarak, bu modülü kullanmaya nereye başlayacağınızın makul bir örneği olmalıdır. Çaygın OS X ve Debian Linux'ta test edilmiştir. H2. Raporları gönderme Temel düzeyinde Pypig, PIG işlerini Hadoop'a göndermek ve bir kümedeki verileri itip çekmek için bir araçtır. Geçerli dizinde Rapor.Pig adlı bir domuz raporumuz olduğunu varsayalım. Bacon.hadoop ithalat hadoopclasspaths = local_home = os.path.join (os.path.dirname (__ file__), "harici", "hadoop-0.18.3") name_node = "file: ///" hadoop = hadoop (local_home, name_node, classpaths) hadoop.run_pig_job ("Report.pig") hadoop.copytolocal ("/ Raporlar / çıkış.csv", "çıkış.csv") Bu kod, Küme NAME_NODE tarafından belirtilen şekilde belirtilen raporu çalıştırır ve ardından çıkışı (çıkış yolunun /Reports/output.csv olduğunu varsayarsak) yerel dosya sistemine çeker. Name_node argümanı herhangi bir HDFS URL'si olabilir (örn. HDFS: // Hadoop_Cluster_IP: 54310). Test kodu, doğru sonuçları doğrulamak için doğru sonuçları doğrulamak için yerel dosya sistemi veya bir test kümesinde verilere işaret etmek için kolayca yazılabilir. H2. Karmaşık raporlar oluşturma Sadece raporları gönderme ötesinde PYPIG, Python ve Domuz Latin'i sadece domuz latininden ziyade python ve domuz latinini kullanarak çok karmaşık raporlar oluşturmak için araçlar sunar. Bu, büyük raporları elle tutmak yerine domuz kodu oluşturmak için daha yüksek düzeyde Python yapılarını kullanmanızı sağlar. Aşağıda, araçlar üzerinde renkli olarak istatistik sağlayan çok basit bir rapor örneğidir. Bacon. = [] Fiyat karşılığında : Color_Reports.Append (Rapor ("% S_cars"% Fiyat, Ebeveynler = {"Color_Data": Veri} Kod = "" "% (BU) S =% (COLOR_DATA) S Fiyata göre% (Color_Data) s <"" "+ str (fiyat) +" "";% (BU) S = FOREACH (GROUCK (BU) S = FOREACH (GROUP (BU GROUP) {Group.color, AVG (% () BU) S.PLICE);} "" ")) Plan = Plan (" / TMP / Raporlar ", Color_Reports) Yazdır Plan.PigFilePlan_Runner = Planrunner (Plan, Hadoop) plan_runner.run_reports () plan_runner.save_reports (" ~ / Raporlar ") plan_runner.cleanup () Bu, aşağıdaki pigfile yazdırır ve sonra çalıştırır ve sonuçları yerel makineye kaydeder: 'Car_colors.tsv' olarak yükleyin (makyaj, model, fiyat, renk); 5000_cars = Filtre Car_Color_Data fiyata göre <5000; 5000_cars = foreach (renkle grup 5000_cars) {Group.color, AVG (5000_cars.price); } 5000_cars'a '/tmp/reports/1244375262.84/5000_cars' 'ı PIGSTORAGE (', '); 10000_cars = Filtre Car_Color_Data fiyatı <10000; 10000_cars = foreach (renkle grup 10000_cars) {Group.color, AVG (10000_cars.price); } 10000_cars'a '/tmp/Reports/1244375262.84/10000_cars' 'ı PigStorage (', '); 15000_cars = Filtre Car_Color_Data fiyatına <15000; 15000_cars = Foreach (Renkli Grup 15000_cars) {Group.color, AVG (15000_cars.price); } 15000_cars'a '/tmp/reports/1244375262.84/15000_cars' 'deki' PigStorage (','); 20000_cars = Filtre Car_Color_Data, fiyatla <20000; 20000_cars = Foreach (Grup 20000_cars renkle) {Group.color, AVG (20000_cars.price); }. 150000_cars = Foreach (Grup 150000_cars renkli) {Group.color, AVG (150000_cars.price); } 150000_cars '/TMP/REPORTS/1244375262.84/150000_CARS' ı '/ PIGSTORAGE (', ') kullanılarak depolayın; Bu örnek çiğ domuz latininde yapılacak önemsiz olsa da (ve zeki bir grupla daha iyi yazılabilir ...), burada bile, burada bile, Python sargısındaki her raporun sonuçlarını ortaya çıkan domuza göre değiştirmek çok daha kolaydır. Latince. Ek olarak, eğer tembel olsaydım ve her takma adını yeniden adlandırılmamış olsaydım, bunun yerine her bir raporu Car_price'i aramak için, modül her takma adı, Car_Price, Car_Price_1, Car_Price_2, vb. Yardımcı bir şekilde yeniden adlandırılır. Dosya sistemine çanta ve daha fazla işlem yapmamak. Bu yeniden adlandırma özelliği, neden rapor şablonunda% (bu) S döngüde kullanıyorum. Rapor nesnesi domuz dosyasına yazıldığında, benlik ve ebeveynler sözlük dize enterpolasyonu ile doldurulur. % (bu) S, mevcut raporun gerçek adını çekmek için kullanılan özel bir anahtardır. Bu işlevsellikten herhangi birini kullanmanın gerekliliği yoktur, rapor sadece sonuç kodu olabilir ve döngü veya ebeveynleri kullanmaktan kaçınabilir, ancak bu, gelecekte raporları değiştirmeyi çok daha zorlaştırır. Hadoop Filesystem üzerindeki yollar doğrudan erişmek için oldukça korkunçtur, bu yüzden planRunner bunları yerel dizine kaydetme ile başa çıkabiliyor. Klasör adı, klasör zaten varsa domuzun şikayet etmesini önlemek için sadece zaman damgasıdır. Save_Reports yöntemi, Hadoop'ta korkunç yolun kullanıldığı her şeyden bir kullanıcının belirtilen dizinine bir şeyleri çekecek ve planRunner'daki temizleme yöntemi, domuz işinin tüm izlerini HDF'lerden çıkarır. H2. Ara sonuçları önbelleğe alma Aşağıdaki kod, aynı başlangıç sonuçlarına göre tasarruf etmek için 3 rapor oluşturur. Bu örneğin amacı için, özel UDF'nin dosyaları işlemek için saatler sürdüğünü ve her bir son raporun birkaç dakika sürer. PIGPY.HADOOP ithalat hadooppfrom pigpy.Reports ithalat raporu, plan, planrunnerhadoop = (hadoop başlatma kodu) Slow_Report = Rapor ("Demographic_Aggregate", kod = "" ""% (bu) S = 'us_census.tsv' olarak yükleyin (yaş, ücret, family_size, eyalet);% (bu) S = (özel UDF'dir. "Ohio", "Nevada"]: State_Reports.Append (Rapor (Devlet, Ebeveynler = {"Demo": slow_report}, kod = "%% (BU) S = %% (demo) S tarafından State == '% s '; "% eyalet)) Plan = Plan (" / TMP / Raporlar ", State_Reports) Print Plan.PigFilePlan_Runner = PlanRunner (plan, hadoop) plan_runner.run_reports () plan_runner.save_reports (" ~ / Raporlar ") plan_runner.cleanup () Bu kod aşağıdaki domuz raporunu oluşturacak ve çalıştıracak: demographic_Aggregate = 'us_census.tsv' olarak yükleyin (yaş, ücret, family_size, eyalet); Demographic_Aggregate = (Korkunç filtreleme / gruplandırma özel UDF) olarak (yaş, ücret, family_size, devlet, sayısı); Michigan = Demographic_Aggregate State == 'Michigan'; Michigan'ı '/tmp/Reports/1244588320.16/Michigan' içine '- PigStorage (', '); Ohio = Filtreleme Demographic_Aggregate State ==' Ohio '; Ohio'yu' OHIO 'e' PIGSTORAGE (','); NEVADA = Demographic_Aggregate tarafından State == 'Nevada'; NEVADA'yı '/TMP/Reports/1244588320.16/nevada'yı' PigStorage (',') kullanarak depolayın; PIG'nin mevcut sürümü (0.2.0, bu öğreticinin anında), bu domuz işi, 3 iştiraki raporunun her biri için demographic_aggreget'i yeniden çalıştıracaktır. Umarım, bu, gelecekteki bir domuz serbest bırakılmasında düzeltilecektir, ancak o zamana kadar, PIGPY, sizin için bu sonuçların önbelleğe alınmasını zorlayabilir. PIGPY.Reports için bir günlük işleyicisi ayarlarsanız, aşağıdaki uyarıyı görmelisiniz: UYARI: PIGPY.REPORTS: Rapor Demographic_Aggregate önbelleğe alınmalıdır, ancak Cache_Columns yok Bu, PIGPY'nin önbelleğe alınması gerektiğini düşündüğü bir rapor bulduğu anlamına gelir, ancak kaydetmek ve yüklemek için uygun ipuçları bulamıyor. Demographic_Aggregate'i bu şekilde değiştirirsek: slow_report = Rapor ("Demographic_Aggregate", kod = "" "% (bu) S = 'us_census.tsv' olarak yükleyin (yaş, ücret, family_size, eyalet);% (bu) S = (Korkunç filtreleme / Gruplandırma özel UDF) (Yaş, ücret, family_size, eyalet, sayım); "" ", cache_columns =" yaş, maaş, family_size, devlet, sayım ") Demographic_Aggregate korkunç hesaplamasını yönettikten sonra, PIGPY bu iki satırı domuz raporuna ekleyecektir: Demographic_Aggregate'i '/TMP/Reports/1244589140.23/demographic_aggregate' içine 'PigStorage (', '); Demographic_Aggregate =' / _ , saymak); Domuz bu kodu görecek ve sonuçları Demographic_Aggregate dosyasına kaydeder. Gelecekteki takma adlar Demographic_Aggreget'i kullandığında, rapordan tekrar yukarı kaldıracaklar ve yük hattını bulacaklar ve hesaplamaları tekrar çalıştırmak yerine önceki sonuçları yüklerler. Yoğun şekilde önbelleğe alma kullanıyorsanız, temizleme yönteminin çağrıldığından emin olmak çok önemlidir veya HDF'leriniz çok hızlı bir şekilde doldurur. Ek olarak, POICPY önbellekleme konusunda çok akıllı değildir, bu yüzden Cache_Column'ları her tedarik ettiğinizde önbelleğe almayı zorlar ve birden fazla iştiraki raporu var. Bu, kümenizde çalışmaya başlamak için ek haritanın azaltılmasına neden olabilir. Zattoo'da, önbellekleme ara değerleri, bağlı ortaklık sayısına bağlı olarak 10x'e kadar performans geliştirilmiştir. Gereksinimler: · Python


çeşni İlgili Yazılım

Pygts

üçgen yüzeyleri oluşturur, manipüle eder ve analiz eder ...

163

İndirmek