Python è adatto per i big data


14

Ho letto in questo post Il linguaggio R è adatto ai Big Data che costituiscono i big data 5TB, e mentre fa un buon lavoro nel fornire informazioni sulla fattibilità di lavorare con questo tipo di dati in Resso fornisce pochissime informazioni Python. Mi chiedevo se Pythonposso lavorare anche con questi dati.

Risposte:


18

Per chiarire, ritengo che i riferimenti alle domande originali di OP probabilmente non siano i migliori per un formato di tipo SO, ma rappresenterò sicuramente pythonin questo caso particolare.

Vorrei solo dire che, indipendentemente dalle dimensioni dei dati, pythonnon dovrebbe essere il fattore limitante. In effetti, ci sono solo un paio di problemi principali che dovrai affrontare con set di dati di grandi dimensioni:

  • Lettura dei dati in memoria - Questo è di gran lunga il problema più comune nel mondo dei big data. Fondamentalmente, non puoi leggere più dati di quanti ne disponga di memoria (RAM). Il modo migliore per risolvere questo problema è eseguire operazioni atomiche sui dati anziché cercare di leggere tutto in una volta.
  • Archiviazione dei dati : questa è in realtà solo un'altra forma del problema precedente, prima 1TBdi iniziare, è necessario cercare altrove spazio di archiviazione. AWS S3 è la risorsa più comune e pythonha la fantastica botolibreria per facilitare la guida con grandi quantità di dati.
  • Latenza di rete : lo spostamento dei dati tra diversi servizi sarà il collo di bottiglia. Non c'è una grande quantità che puoi fare per risolvere questo problema, oltre a provare a raccogliere risorse situate e collegarti al muro.

13

Ci sono un paio di cose che devi capire quando si tratta di Big Data:

Cosa sono i Big Data?

Potresti essere a conoscenza delle famose V di Big data - Volume, Velocity, Variety ... Quindi, Python potrebbe non essere adatto a tutti. E funziona con tutti gli strumenti di data science disponibili. Devi sapere quale strumento è buono per quale scopo.

Se hai a che fare con grandi volumi di dati:

  • Pig / Hive / Shark - Pulizia dei dati e lavoro ETL
  • Hadoop / Spark: calcolo parallelo distribuito
  • Mahout / ML-Lib - Apprendimento automatico

Ora puoi utilizzare R / Python in fasi intermedie ma ti renderai conto che diventano colli di bottiglia nell'intero processo.

Se hai a che fare con la velocità dei dati:

  • Kafka / Storm - Sistema ad alto rendimento

Le persone stanno provando a R / Python qui, ma di nuovo dipende dal tipo di parallelismo desiderato e dalla complessità del modello.

Che tipo di analisi desideri fare?

Se il tuo modello richiede che tutti i dati vengano prima portati in memoria, il tuo modello non dovrebbe essere complesso perché se i dati intermedi sono grandi, il codice si romperà. E se pensate di scriverlo sul disco, dovrete affrontare ulteriori ritardi perché la lettura / scrittura del disco è lenta rispetto alla RAM.

Conclusione

Puoi sicuramente usare Python nello spazio Big Data (Sicuramente, poiché le persone stanno provando con R, perché non Python) ma conosci prima i tuoi dati e le tue esigenze aziendali. Potrebbero essere disponibili strumenti migliori per lo stesso e ricorda sempre:

I tuoi strumenti non dovrebbero determinare come rispondi alle domande. Le tue domande dovrebbero determinare quali strumenti usi.


8

Python ha alcuni ottimi strumenti per lavorare con i big data:

numpy

Le matrici mappate a memoria di Numpy consentono di accedere a un file salvato su disco come se fosse un array. Solo le parti dell'array con cui stai lavorando attivamente devono essere caricate in memoria. Può essere usato praticamente come un normale array.

h5py e pytables

Queste due librerie forniscono l'accesso ai file HDF5. Questi file consentono l'accesso a solo una parte dei dati. Inoltre, grazie alle librerie sottostanti utilizzate per accedere ai dati, è possibile eseguire molte operazioni matematiche e altre manipolazioni dei dati senza caricarli in una struttura di dati Python. Sono possibili file di grandi dimensioni e altamente strutturati, molto più grandi di 5 TB. Inoltre, consente una compressione senza perdita di dati.

banche dati

Esistono vari tipi di database che consentono di archiviare set di dati di grandi dimensioni e caricare solo le parti necessarie. Molti database consentono di eseguire manipolazioni senza caricare i dati in una struttura di dati Python.

panda

Ciò consente un accesso di livello superiore a vari tipi di dati, inclusi dati HDF5, file CSV, database e persino siti Web. Per i big data, fornisce wrapper per l'accesso ai file HDF5 che semplifica l'analisi dei set di big data.

mpi4py

Questo è uno strumento per eseguire il codice Python in modo distribuito su più processori o anche più computer. Ciò ti consente di lavorare su parti dei tuoi dati contemporaneamente.

dask

Fornisce una versione della normale matrice numpy che supporta molte delle normali operazioni numpy in modo multi-core in grado di lavorare su dati troppo grandi per adattarsi alla memoria.

fiammata

Uno strumento appositamente progettato per i big data. Fondamentalmente si tratta di un wrapper attorno alle librerie di cui sopra, che fornisce interfacce coerenti a una varietà di diversi metodi di archiviazione di grandi quantità di dati (come HDF5 o database) e strumenti per facilitare la manipolazione, eseguire operazioni matematiche e analizzare dati che è troppo grande per adattarsi alla memoria.


4

Assolutamente. Quando lavori con dati su quella scala è comune usare un framework di big data, nel qual caso python o qualunque linguaggio tu stia usando è semplicemente un'interfaccia. Vedi ad esempio la Guida alla programmazione Python di Spark . Che tipo di dati hai e cosa vuoi fare con loro?


3

Per gestire una tale quantità di dati, il linguaggio di programmazione non è la preoccupazione principale, ma lo è il quadro di programmazione. Frame come MapReduce o Spark hanno collegamenti a molte lingue tra cui Python. Questi framework hanno certamente molti pacchetti pronti all'uso per le attività di analisi dei dati. Ma alla fine tutto dipende dalle tue esigenze, cioè qual è il tuo compito? Le persone hanno diverse definizioni delle attività di analisi dei dati, alcune delle quali possono essere facilmente risolte con database relazionali. In tal caso, SQL è molto meglio di tutte le altre alternative.


2

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

  • Quanto sono grandi i dati in realtà
  • Quale elaborazione eseguirai su di esso
  • Quale hardware hai intenzione di utilizzare
  • Quali sono le librerie specifiche che prevedi di utilizzare

Ad ogni modo, Python è ben adottato nelle comunità di data science.


2

Ho usato Anaconda Python 3.4 e Panda per cercare nel database di 10 milioni di righe per abbinare 20.000 di credenziali di accesso. Ci vuole circa un minuto I panda interni fanno un grande uso della memoria. Detto questo, i big data richiedono un'architettura di elaborazione adeguata al problema. Panda è solo la colla (logica) in questa equazione, e anche altri strumenti possono farlo. R, Scala, Haskell, SAS, ecc. Possono replicare parte della logica, forse quanto basta per rispondere più velocemente alle domande. Ma Python è un ottimo strumento (migliore?) Per tutti gli usi. Puoi eseguire il codice R in Python, così come la maggior parte delle altre lingue. Sebbene interpretativi, esistono tecniche e strumenti ad alte prestazioni come pypy che possono far funzionare Python quasi alla stessa velocità degli strumenti di benchmark con solo un po 'più di sforzo. E python ha molte librerie che fanno praticamente tutto - vedi l'elenco sopra.

Se mi stai chiedendo se dovresti imparare e usare Python, la mia risposta è sì Gli articoli indicano che Python è usato più di R tra le persone che usano entrambi. Ma pochi problemi di scienza dei dati sono risolti da un unico strumento. Potrebbe diventare il tuo strumento preferito, ma è solo quello: uno strumento. E proprio come nessuna persona sana di mente costruisce una casa con solo un martello, nessun sano scienziato dei dati usa un solo strumento.


0

È divertente come le persone mescolino i big data con la scienza dei dati e la business intelligence.

In primo luogo, i big data significano "molti dati", così tante informazioni che non rientrano in un database convenzionale. Tuttavia, a volte i big data non sono nemmeno informazioni "di valore" adeguate ma documenti, immagini e così via.

Quindi, per elaborare i big data, ABBIAMO BISOGNO DI VELOCITÀ. Python è fuori scala, quindi R. Tuttavia, se l'attività è facile come prendere un CSV e inserirlo in un database, allora è ETL, non abbiamo bisogno di programmazione per farlo.

E quando le informazioni vengono ridotte, allora potremmo applicare python, r o qualunque cosa tu voglia. Anche Excel. Tuttavia, in questa fase, i Big Data non sono più grandi ma dati convenzionali.

IMHO, Java è più adatto ai Big Data (per l'intera catena) ma le persone prendono Python come predefinito per qualche motivo poco pratico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.