Python büyük veriler için uygun mu?


14

Bu yazıda okudum , büyük verilerin oluşturduğu Büyük Veri için uygun olan R dili5TB ve bu tür verilerle çalışmanın fizibilitesi hakkında bilgi sağlamak iyi bir iş çıkarırken, Rhakkında çok az bilgi sağlıyor Python. PythonBu kadar fazla veriyle de çalışabilir miyim diye merak ediyordum .

Yanıtlar:


18

Açıklığa kavuşturmak için, OP'nin orijinal soru referanslarının muhtemelen SO-tipi bir format için en iyi olmadığını hissediyorum, ancak kesinlikle pythonbu özel durumda temsil edeceğim .

Sadece veri boyutunuz ne olursa olsun, pythonsınırlayıcı faktörünüz olmaması gerektiğini söyleyerek başlayayım. Aslında, büyük veri kümeleriyle uğraşacağınız birkaç ana sorun var:

  • Verileri belleğe okuma - Bu, büyük veri dünyasında karşılaşılan en yaygın sorundur. Temel olarak, belleğinizden (RAM) daha fazla veri okuyamazsınız. Bunu düzeltmenin en iyi yolu, her şeyi bir kerede okumaya çalışmak yerine verilerinizde atom işlemleri yapmaktır.
  • Verilerin saklanması - Bu aslında önceki sayının başka bir şeklidir, ulaşma zamanına kadar 1TBdepolama için başka bir yere bakmaya başlarsınız. AWS S3 en yaygın kaynaktır ve büyük veri parçalarıyla liderliği kolaylaştıran pythonmuhteşem botokütüphaneye sahiptir .
  • Ağ gecikmesi - Verileri farklı servisler arasında taşımak darboğazınız olacaktır. Bunu düzeltmek için yapabileceğiniz çok fazla bir şey yok, birlikte bulunan kaynakları seçmeye ve duvara takmaya çalışmaktan başka.

13

Büyük verilerle uğraşırken anlamanız gereken birkaç şey vardır -

Büyük veri nedir?

Ünlü V'lerin Büyük verinin farkında olabilirsiniz - Hacim, Hız, Çeşitlilik ... Yani, Python herkes için uygun olmayabilir. Ve mevcut tüm veri bilimi araçları ile gider. Hangi aracın hangi amaç için iyi olduğunu bilmeniz gerekir.

Büyük miktarda veri ile uğraşıyorsanız:

  • Domuz / Kovan / Köpekbalığı - Veri temizleme ve ETL çalışması
  • Hadoop / Spark - Dağıtık paralel hesaplama
  • Mahout / ML-Lib - Makine Öğrenimi

Şimdi, R / Python'u ara aşamalarda kullanabilirsiniz, ancak tüm sürecinizde darboğaz olduklarını fark edeceksiniz.

Veri hızı ile ilgileniyorsanız:

  • Kafka / Storm - Yüksek verimli sistem

İnsanlar burada R / Python yapmaya çalışıyorlar ama yine de bu, istediğiniz paralellik ve model karmaşıklığınıza bağlı.

Ne tür bir analiz yapmak istiyorsunuz?

Modeliniz tüm verilerin ilk önce belleğe alınmasını istiyorsa, modeliniz karmaşık olmamalıdır, çünkü ara veriler büyükse kod kırılacaktır. Ve diske yazmayı düşünüyorsanız, disk okuma / yazma RAM ile karşılaştırıldığında yavaş olduğu için ek gecikme ile karşılaşacaksınız.

Sonuç

Python'u büyük veri alanında kesinlikle kullanabilirsiniz (Kesinlikle, insanlar R ile çalıştığından, neden Python'u denemiyor), ancak önce verilerinizi ve iş gereksinimlerinizi biliyorsunuz. Aynı araçlar için daha iyi araçlar olabilir ve her zaman unutmayın:

Araçlarınız soruları nasıl yanıtlayacağınızı belirlememelidir. Sorularınız hangi araçları kullandığınızı belirlemelidir.


8

Python'un büyük verilerle çalışmak için çok iyi araçları var:

dizi

Numpy'nin bellekle eşlenen dizileri, diskte kaydedilmiş bir dosyaya bir diziymiş gibi erişmenizi sağlar. Dizinin yalnızca aktif olarak çalıştığınız bölümlerinin belleğe yüklenmesi gerekir. Sıradan bir dizi ile hemen hemen aynı şekilde kullanılabilir.

h5py ve pire

Bu iki kütüphane HDF5 dosyalarına erişim sağlar. Bu dosyalar verilerin sadece bir kısmına erişime izin verir. Ayrıca, verilere erişmek için kullanılan temel kütüphaneler sayesinde, verilerin bir çok matematiksel işlemi ve diğer manipülasyonları, bir python veri yapısına yüklenmeden yapılabilir. 5 TB'tan çok daha büyük, büyük yapılandırılmış dosyalar mümkündür. Ayrıca kesintisiz, kayıpsız sıkıştırma sağlar.

veritabanları

Büyük veri kümelerini depolamanıza ve yalnızca ihtiyacınız olan parçaları yüklemenize olanak tanıyan çeşitli veritabanı türleri vardır. Birçok veritabanı, verileri bir python veri yapısına yüklemeden manipülasyonlar yapmanıza izin verir.

pandalar

Bu, HDF5 verileri, csv dosyaları, veritabanları ve hatta web siteleri dahil olmak üzere çeşitli veri türlerine daha yüksek düzeyde erişim sağlar. Büyük veri için, HDF5 dosya erişimi etrafında büyük veri kümeleri üzerinde analiz yapmayı kolaylaştıran sarmalayıcılar sağlar.

mpi4py

Bu, python kodunuzu birden çok işlemci veya hatta birden fazla bilgisayarda dağıtılmış bir şekilde çalıştırmak için bir araçtır. Bu, verilerinizin bölümleri üzerinde aynı anda çalışmanıza olanak tanır.

dask

Belleğe sığmayacak kadar büyük veriler üzerinde çalışabilen normal numpy işlemlerinin çoğunu çok çekirdekli bir şekilde destekleyen normal numpy dizisinin bir sürümünü sağlar.

yangın

Özellikle büyük veriler için tasarlanmış bir araç. Temel olarak, yukarıdaki kütüphanelerin etrafında, büyük miktarlarda veriyi (HDF5 veya veritabanları gibi) ve manipülasyonu, matematiksel işlemleri gerçekleştirmeyi ve analiz etmeyi kolaylaştıran araçları depolamak için çeşitli farklı yöntemlere tutarlı arayüzler sağlayan bir sargıdır. hafızaya sığmayacak kadar büyük.


4

Kesinlikle. Bu ölçekte verilerle çalışırken büyük bir veri çerçevesi kullanmak yaygındır; bu durumda python veya hangi dili kullanırsanız kullanın bir arayüzdür. Bkz. Örneğin Spark'ın Python Programlama Kılavuzu . Ne tür verileriniz var ve bununla ne yapmak istiyorsunuz?


3

Bu miktarda veriyi ele almak için, programlama dili ana endişe değil, programlama çerçevesi. MapReduce veya Spark gibi çerçevelerin Python dahil birçok dile bağları vardır. Bu çerçeveler kesinlikle veri analizi görevleri için birçok kullanıma hazır pakete sahiptir. Ama sonunda her şey sizin gereksiniminize geliyor, yani göreviniz nedir? İnsanların veri analizi görevlerinin farklı tanımları vardır, bazıları ilişkisel veritabanlarıyla kolayca çözülebilir. Bu durumda, SQL diğer tüm alternatiflerden çok daha iyidir.


2

Büyük veri söz konusu olduğunda, dilin performans özellikleriyle çok az ilgisi olduğuna inanıyorum. Önemli olan:

  • Veriler aslında ne kadar büyük
  • Üzerinde hangi işlemleri yapacaksınız?
  • Hangi donanımı kullanacaksın
  • Kullanmayı planladığınız kütüphaneler hangileri

Her neyse, Python veri bilimi topluluklarında iyi benimsenmiştir.


2

Anaconda Python 3.4 ve Pandalar'ı kullanarak 10M satır veritabanını 20K giriş kimlik bilgileriyle eşleştiriyorum. Yaklaşık bir dakika sürer. Pandaların iç kısımları hafızayı büyük ölçüde kullanır. Bununla birlikte, gerçekten büyük veriler, soruna uygun bir işleme mimarisi gerektirir. Pandalar bu denklemin sadece tutkalı (mantığı) ve diğer araçlar da bunu yapabilir. R, Scala, Haskell, SAS, vb. Mantığın bir kısmını çoğaltabilir - belki de soruları daha hızlı cevaplamak için yeterlidir. Ancak python iyi (en iyi?) Genel amaçlı bir araç yapar. R kodunu diğer birçok dilde olduğu gibi python'da da çalıştırabilirsiniz. Yorumlayıcı olmasına rağmen, piton gibi python'u neredeyse biraz daha çabayla kıyaslama araçları kadar hızlı çalıştırabilen yüksek performanslı teknikler ve araçlar vardır. Ve python'un hemen hemen her şeyi yapan birçok kütüphanesi vardır - yukarıdaki listeye bakın.

Python'u öğrenip kullanmanız gerekip gerekmediğini soruyorsanız, cevabım evet Makaleler, her ikisini de kullanan insanlar arasında python'un R'den daha fazla kullanıldığını gösterir. Ancak çok az veri bilimi sorunu tek bir araçla çözülür. Bu senin gitme aracınız olabilir, ama bu sadece o - bir araç. Ve aklı başında hiç kimse sadece çekiçle bir ev inşa etmediği gibi aklı başında hiçbir Veri Akademisyeni sadece bir araç kullanmaz.


0

İnsanların büyük veriyi veri bilimi ve iş zekasıyla nasıl karıştırdığı komik.

İlk olarak, büyük veri "çok fazla veri" anlamına gelir, o kadar çok bilgi geleneksel bir veritabanına sığmaz. Ancak, bazen büyük veri bile uygun "değer" bilgi değil, belgeler, görüntüler vb.

Bu nedenle, büyük verileri işlemek için HIZA İHTİYACIMIZ VAR. Python lig dışında, bu yüzden R. Ancak, eğer görev bir CSV almak ve bir veritabanına eklemek kadar kolaysa, o zaman ETL, bunu yapmak için programlamaya ihtiyacımız yok.

Ve bilgi azaldığında, python, r veya ne istersen uygulayabiliriz. Excel bile. Ancak, bu aşamada, Büyük Veri artık büyük değil, geleneksel verilerdir.

IMHO, Java Büyük Veri için (tüm zincir için) daha uygundur, ancak insanlar bazı pratik olmayan nedenlerden ötürü Python'u varsayılan olarak alır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.