Domanda

ho letto in questo post è il linguaggio adatto per R Big Data quel grande dati costituisce 5TB, e mentre fa un buon lavoro di fornire informazioni circa la fattibilità di lavorare con questo tipo di dati in R fornisce pochissime informazioni su Python. Mi chiedevo se Python può lavorare con questa quantità di dati pure.

È stato utile?

Soluzione

Per chiarire, mi sento come se i riferimenti domanda originale di OP probabilmente non è la cosa migliore per un formato SO-tipo, ma io certamente rappresenterà python in questo caso particolare.

Lasciatemi cominciare dicendo che indipendentemente dalle dimensioni dei dati, python non dovrebbe essere il vostro fattore limitante. In realtà, ci sono solo un paio di questioni principali che si sta andando a correre in trattare con grandi serie di dati:

  • La lettura dei dati in memoria - Questo è di gran lunga il più problema comune di fronte al mondo dei Big Data. In sostanza, non è possibile leggere in più dati di quanto si dispone di memoria (RAM) per. Il modo migliore per risolvere questo problema è quello di fare operazioni atomiche sui dati invece di cercare di leggere tutto in una sola volta.
  • dati Memorizzazione - Questo è in realtà solo un'altra forma della questione in precedenza, con il tempo per arrivare fino a circa 1TB, si iniziano ad avere a guardare altrove per la conservazione. AWS S3 è la risorsa più comune, e python ha la libreria boto fantastico per facilitare il leader con grandi pezzi di dati.
  • Rete di latenza - Lo spostamento dei dati in giro tra i diversi servizi sta per essere il collo di bottiglia. Non c'è una quantità enorme si può fare per risolvere questo problema, altro che cercare di raccogliere risorse co-locati e collegare alla presa a muro.

Altri suggerimenti

Ci sono un paio di cose è necessario capire quando si tratta di dati di grandi -

Cosa sono i dati Big?

Si potrebbe essere a conoscenza del famoso V dispone di dati Big - Volume, Velocità, Varietà ... Quindi, Python può non essere adatto a tutti. E va con tutti gli strumenti della scienza i dati disponibili. Hai bisogno di sapere quale strumento è buono per quello scopo.

Se si tratta di grandi quantità di dati:

  • Pig / Hive / Shark - pulizia dei dati e il lavoro ETL
  • Hadoop / Spark - Distributed calcolo parallelo
  • Mahout / ML-Lib - Machine Learning

Ora, è possibile utilizzare R / Python in fasi intermedie, ma vi renderete conto che diventano collo di bottiglia nel vostro intero processo.

Se si tratta di velocità dei dati:

  • Kafka / Storm - alto throughput di sistema

La gente sta cercando di R / Python qui ma ancora una volta dipende dal tipo di parallelismo che si desidera e il vostro modello di complessità.

Che tipo di analisi che si desidera fare?

Se il modello richiede tutti i dati da prima portati in memoria, allora il vostro modello non dovrebbe essere complesso, perché se i dati intermedio è grande allora il codice si romperà. E se si pensa di scrivere in disco? Allora ti faccia ulteriore ritardo perché il disco in lettura / scrittura è lenta rispetto alla RAM.

Conclusione

Si può sicuramente usare Python nel Grande spazio dati (Sicuramente, dal momento che le persone stanno cercando con R, perché non Python), ma conoscere i propri dati e le esigenze business. Ci possono essere migliori strumenti disponibili per la stessa e sempre ricordare:

I tuoi strumenti non dovrebbero determinare come rispondere alle domande. Le vostre domande dovrebbero determinare quali strumenti utilizzare.

Python ha alcuni ottimi strumenti per lavorare con i dati di grandi:

NumPy

array memmory-mapped di NumPy consentono di accedere un file salvato su disco come se fosse un array. Solo le parti di matrice che si sta attivamente lavorando con necessità di essere caricato in memoria. Può essere utilizzato praticamente la stessa come una matrice comune.

h5py e pytables

Queste due biblioteche forniscono l'accesso ai file HDF5. Questi file consentono l'accesso a solo una parte dei dati. Inoltre, grazie alle librerie sottostanti utilizzati per accedere ai dati, molte operazioni matematiche e altre manipolazioni dei dati può essere fatto senza caricare in una struttura dati pitone. Massive, file altamente strutturati sono possibili, molto più grande di 5 TB. Permette anche senza soluzione di continuità, la compressione lossless.

database

Ci sono vari tipi di database che consentono di memorizzare grandi insiemi di dati e caricare solo i pezzi necessari. Molti database consentono di fare manipolazioni senza caricare i dati in una struttura di dati pitone a tutti.

panda

In questo modo l'accesso di livello superiore per vari tipi di dati, compresi i dati HDF5, file csv, banche dati, siti web anche. Per i grandi dati, fornisce wrapper attorno accesso ai file HDF5 che rende più facile fare analisi su grandi insiemi di dati.

mpi4py

Questo è uno strumento per l'esecuzione il codice Python in modo distribuito tra più processori o anche più computer. Questo ti permette di lavorare su parti di dati simultaneamente.

dask

Si fornisce una versione della normale matrice NumPy che supporta molti dei normali operazioni NumPy in modo multi-core che possono lavorare dati troppo grande per entrare nella memoria.

fiammata

Uno strumento specificamente progettato per i grandi dati. Si tratta essenzialmente di un involucro intorno alle librerie di cui sopra, fornendo interfacce coerenti per una varietà di diversi metodi di memorizzazione di grandi quantità di dati (come HDF5 o banche dati) e strumenti per rendere più facile da manipolare, fare operazioni matematiche su, e analizzare i dati che è troppo grande per entrare nella memoria.

Assolutamente. Quando si lavora con i dati in quella scala è comune utilizzare un quadro di dati grande, nel qual caso pitone o qualunque linguaggio si sta utilizzando è semplicemente un'interfaccia. Si veda ad esempio Spark di programmazione Python Guida . Che tipo di dati avete e che cosa si vuole fare con esso?

Per gestire tale quantità di dati, la programmazione di lingua non è la preoccupazione principale, ma il quadro di programmazione è. Framework quali MapReduce o Spark hanno attacchi a molte lingue tra cui Python. Questi quadri hanno certamente molti pacchetti pronti per l'uso per le attività di analisi dei dati. Ma alla fine tutto si il vostro requisito, vale a dire, qual è il tuo compito? Le persone hanno diverse definizioni di compiti di analisi dei dati, alcuni di essi possono essere facilmente risolto con i database relazionali. In tal caso, SQL è molto meglio di tutte le altre alternative.

Credo che il linguaggio stesso ha poco a che fare con la capacità di prestazioni, quando si tratta di dati di grandi dimensioni. Ciò che conta è:

  • Quanto è grande il dato in realtà
  • Cosa elaborazione hai intenzione di eseguire su di esso
  • Quale hardware hai intenzione di utilizzare
  • Quali sono le librerie specifiche che si prevede di utilizzare

In ogni caso, Python è ben adottata nelle comunità scientifiche dei dati.

Ho usato Anaconda Python 3.4 e Panda per la ricerca di database fila 10M per abbinare 20K di credenziali di accesso. Richiede circa un minuto. I panda interni fanno grande uso della memoria. Detto questo, veramente grande dati richiede un'architettura di elaborazione abbinato al problema. Pandas è solo la colla (logico) in questa equazione, e altri strumenti può fare anche questo. R, Scala, Haskell, SAS, ecc può replicare alcuni dei logica - forse appena sufficiente per rispondere alle domande più velocemente. Ma pitone rende una buona (migliore?) Strumento general-purpose. È possibile eseguire il codice R in python, così come la maggior parte delle altre lingue. Anche se interpretativa, ci sono tecniche ad alte prestazioni e di strumenti come PyPy che può fare run pitone quasi veloce come strumenti di benchmark con solo un po 'più di sforzo. E Python ha molte librerie che fanno quasi tutto - vedi elenco

.

Se ti stai chiedendo se si dovrebbe imparare e da usare python, la mia risposta è sì articoli indicano che Python viene utilizzato più di R tra le persone che fanno uso di entrambe le cose. Ma alcuni problemi scientifici dati vengono risolti con un unico strumento. Può diventare il vostro go-to strumento, ma è solo che - uno strumento. E proprio come nessuna persona sana costruisce una casa con solo un martello, nessun sano di mente dati Scienziato utilizza un solo strumento.

E 'divertente come la gente si mescolano grandi di dati con la scienza dei dati e la business intelligence.

In primo luogo, i grandi mezzi di dati "un sacco di dati", così tante informazioni che non si adatta in un database convenzionale. Tuttavia, a volte grande dei dati non è nemmeno una corretta informazione "valore" ma i documenti, le immagini e così via.

Quindi, per elaborare i dati di grandi dimensioni, ABBIAMO BISOGNO DI VELOCITÀ. Python è fuori del campionato, in modo da R. Tuttavia, se il compito è facile come prendere un CSV e di inserimento in una banca dati, allora di ETL, non abbiamo bisogno di programmazione per farlo.

E quando l'informazione viene ridotta, quindi si potrebbe applicare pitone, R o qualsiasi altra cosa che si desidera. Excel anche. Tuttavia, in questa fase, Big Data non è grande più, ma i dati convenzionali.

IMHO, Java è più adatto per i Big Data (per l'intera catena) ma la gente prende Python come predefinito per qualche ragione poco pratico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top