O Python é adequado para big data

13

Eu li neste post. A linguagem R é adequada para Big Data que o big data constitui 5TBe, embora faça um bom trabalho em fornecer informações sobre a viabilidade de trabalhar com esse tipo de dados R, fornece muito pouca informação sobre Python. Fiquei me perguntando se Pythonpode trabalhar com tantos dados também.

ragingSloth
fonte

Respostas:

17

Para esclarecer, acho que as referências originais às perguntas do OP provavelmente não são as melhores para um formato do tipo SO, mas certamente representarei pythonneste caso em particular.

Deixe-me começar dizendo que, independentemente do tamanho dos dados, pythonnão deve ser seu fator limitante. De fato, existem apenas alguns dos principais problemas que você encontrará ao lidar com grandes conjuntos de dados:

  • Lendo dados na memória - Esse é de longe o problema mais comum enfrentado no mundo do big data. Basicamente, você não pode ler mais dados do que possui memória (RAM). A melhor maneira de corrigir isso é fazendo operações atômicas em seus dados, em vez de tentar ler tudo de uma vez.
  • Armazenamento de dados - na verdade, essa é apenas uma outra forma do problema anterior. Quando você se aproxima 1TB, começa a procurar em outro lugar por armazenamento. O AWS S3 é o recurso mais comum e pythonpossui uma botobiblioteca fantástica para facilitar a liderança com grandes quantidades de dados.
  • Latência da rede - A movimentação de dados entre diferentes serviços será o seu gargalo. Não há uma quantidade enorme que você possa fazer para consertar isso, além de tentar escolher recursos co-localizados e conectar-se à parede.
indico
fonte
13

Há algumas coisas que você precisa entender ao lidar com Big Data -

O que é Big Data?

Você pode estar ciente dos famosos Vs de Big data - Volume, Velocidade, Variedade ... Portanto, o Python pode não ser adequado para todos. E isso acontece com todas as ferramentas de ciência de dados disponíveis. Você precisa saber qual ferramenta é boa para qual finalidade.

Se estiver lidando com grande volume de dados:

  • Pig / Hive / Shark - Limpeza de dados e trabalho ETL
  • Hadoop / Spark - Computação paralela distribuída
  • Mahout / ML-Lib - Aprendizado de máquina

Agora, você pode usar o R ​​/ Python em estágios intermediários, mas perceberá que eles se tornam gargalo em todo o processo.

Se estiver lidando com a velocidade dos dados:

  • Kafka / Storm - Sistema de alto rendimento

As pessoas estão tentando R / Python aqui, mas novamente depende do tipo de paralelismo que você deseja e da complexidade do seu modelo.

Que tipo de análise você deseja fazer?

Se o seu modelo exigir que todos os dados sejam trazidos para a memória primeiro, ele não deverá ser complexo, pois se os dados intermediários forem grandes, o código será interrompido. E se você pensar em gravá-lo no disco, terá um atraso adicional, pois a leitura / gravação do disco é lenta em comparação com a RAM.

Conclusão

Definitivamente, você pode usar o Python no espaço de Big Data (definitivamente, já que as pessoas estão tentando com o R, por que não o Python), mas conhece primeiro os seus dados e requisitos de negócios. Pode haver melhores ferramentas disponíveis para o mesmo e lembre-se sempre:

Suas ferramentas não devem determinar como você responde às perguntas. Suas perguntas devem determinar quais ferramentas você usa.

Ankit
fonte
8

O Python tem algumas ferramentas muito boas para trabalhar com big data:

entorpecido

As matrizes mapeadas por memória do Numpy permitem acessar um arquivo salvo no disco como se fosse uma matriz. Somente as partes da matriz com a qual você está trabalhando ativamente precisam ser carregadas na memória. Ele pode ser usado praticamente da mesma forma que uma matriz comum.

h5py e pytables

Essas duas bibliotecas fornecem acesso aos arquivos HDF5. Esses arquivos permitem o acesso a apenas parte dos dados. Além disso, graças às bibliotecas subjacentes usadas para acessar os dados, muitas operações matemáticas e outras manipulações dos dados podem ser feitas sem carregá-las em uma estrutura de dados python. Arquivos maciços e altamente estruturados são possíveis, muito maiores que 5 TB. Ele também permite compactação perfeita e sem perdas.

bases de dados

Existem vários tipos de bancos de dados que permitem armazenar grandes conjuntos de dados e carregar apenas as partes necessárias. Muitos bancos de dados permitem que você faça manipulações sem carregar os dados em uma estrutura de dados python.

pandas

Isso permite acesso de nível superior a vários tipos de dados, incluindo dados HDF5, arquivos csv, bancos de dados e até sites. Para big data, ele fornece wrappers para acesso a arquivos HDF5, facilitando a análise de conjuntos de big data.

mpi4py

Esta é uma ferramenta para executar seu código python de maneira distribuída em vários processadores ou mesmo em vários computadores. Isso permite que você trabalhe em partes de seus dados simultaneamente.

dask

Ele fornece uma versão do array numpy normal que suporta muitas das operações numpy normais de uma maneira com vários núcleos que podem trabalhar com dados muito grandes para caber na memória.

chama

Uma ferramenta projetada especificamente para big data. É basicamente um invólucro nas bibliotecas acima, fornecendo interfaces consistentes para uma variedade de métodos diferentes de armazenamento de grandes quantidades de dados (como HDF5 ou bancos de dados) e ferramentas para facilitar a manipulação, a execução de operações matemáticas e a análise de dados que é grande demais para caber na memória.

O gato preto
fonte
4

Absolutamente. Quando você trabalha com dados nessa escala, é comum usar uma estrutura de big data; nesse caso, python ou qualquer outra linguagem que você esteja usando é apenas uma interface. Veja, por exemplo, o Guia de Programação em Python do Spark . Que tipo de dados você possui e o que deseja fazer com eles?

Emre
fonte
3

Para lidar com essa quantidade de dados, a linguagem de programação não é a principal preocupação, mas a estrutura de programação. Estruturas como MapReduce ou Spark têm ligações para muitas linguagens, incluindo Python. Essas estruturas certamente possuem muitos pacotes prontos para uso para tarefas de análise de dados. Mas, no final, tudo se resume a sua exigência, ou seja, qual é a sua tarefa? As pessoas têm definições diferentes de tarefas de análise de dados, algumas delas podem ser facilmente resolvidas com bancos de dados relacionais. Nesse caso, o SQL é muito melhor que todas as outras alternativas.

lgylym
fonte
2

Acredito que a própria linguagem tem pouco a ver com os recursos de desempenho, quando se trata de grandes dados. O que importa é:

  • Qual é o tamanho dos dados realmente
  • Que processamento você vai executar nele
  • Qual hardware você vai usar
  • Quais são as bibliotecas específicas que você planeja usar

De qualquer forma, o Python é bem adotado nas comunidades de ciência de dados.

Mateva
fonte
2

Estou usando o Anaconda Python 3.4 e o Pandas para pesquisar no banco de dados de 10 milhões de linhas para corresponder a 20 K de credenciais de login. Demora cerca de um minuto. Os internos dos pandas fazem um ótimo uso da memória. Dito isto, realmente big data requer uma arquitetura de processamento compatível com o problema. Pandas é apenas a cola (lógica) nesta equação, e outras ferramentas também podem fazer isso. R, Scala, Haskell, SAS, etc. podem replicar parte da lógica - talvez apenas o suficiente para responder perguntas mais rapidamente. Mas python é uma boa (melhor?) Ferramenta de uso geral. Você pode executar o código R em python, assim como na maioria dos outros idiomas. Embora interpretativas, existem técnicas e ferramentas de alto desempenho, como o pypy, que podem fazer o python funcionar quase tão rápido quanto as ferramentas de benchmark, com apenas um pouco mais de esforço. E o python tem muitas bibliotecas que fazem quase tudo - veja a lista acima.

Se você está perguntando se deve aprender e usar o python, minha resposta é sim. Os artigos indicam que o python é usado mais que R entre as pessoas que usam os dois. Mas poucos problemas de ciência de dados são resolvidos por uma única ferramenta. Pode se tornar sua ferramenta principal, mas é apenas isso - uma ferramenta. E, assim como nenhuma pessoa sã constrói uma casa com apenas um martelo, nenhum Cientista de Dados sã usa apenas uma ferramenta.

Harvey
fonte
0

É engraçado como as pessoas misturam big data com ciência de dados e inteligência de negócios.

Primeiro, big data significa "muitos dados", tanta informação que não cabe em um banco de dados convencional. No entanto, às vezes, o big data nem sequer é uma informação adequada de "valor", mas documentos, imagens e assim por diante.

Portanto, para processar big data, PRECISAMOS DE VELOCIDADE. Python está fora da liga, então R. No entanto, se a tarefa é tão fácil quanto pegar um CSV e inserir em um banco de dados, então é ETL, não precisamos de programação para fazer isso.

E quando as informações são reduzidas, podemos aplicar python, r ou o que você quiser. Até o Excel. No entanto, nesta etapa, o Big Data não é mais grande, mas sim dados convencionais.

IMHO, Java é mais adequado para Big Data (para toda a cadeia), mas as pessoas tomam o Python como padrão por algum motivo impraticável.

Magallanes
fonte