Introdução ao Spark com Python - PySpark para iniciantes



O Apache Spark assumiu o controle do mundo do Big Data & Analytics e Python é uma das linguagens de programação mais acessíveis usadas na indústria hoje. Então, aqui neste blog, aprenderemos sobre Pyspark (faísca com python) para obter o melhor dos dois mundos.

é uma das estruturas mais amplamente utilizadas quando se trata de lidar e trabalhar com Big Data E Pitão é uma das linguagens de programação mais amplamente usadas para Análise de Dados, Aprendizado de Máquina e muito mais. Então, por que não usá-los juntos? Aqui é onde Spark com Python também conhecido como PySpark entra emacenário.

Com um salário médio de $ 110.000 por ano para um desenvolvedor Apache Spark, não há dúvida de que o Spark é muito usado na indústria. Por causa deEstárico conjunto de bibliotecas, Python é usado poramaioria dos cientistas de dados e especialistas em análise hoje. Integrar Python com Spark foi um grande presente para a comunidade. O Spark foi desenvolvido na linguagem Scala, que é muito semelhante ao Java. Ele compila o código do programa em bytecode para a JVM para o processamento de big data do spark. Para oferecer suporte ao Spark com python, a comunidade Apache Spark lançou o PySpark.Desde então, é conhecida por ser uma das habilidades mais procuradas em todo o setor, devido à ampla gama de benefícios que resultam da combinação do melhor desses dois mundos.Neste blog do Spark com Python, discutirei os tópicos a seguir.





Introdução ao Apache Spark

Apache Spark é uma estrutura de computação em cluster de código aberto para processamento em tempo real desenvolvido pela Apache Software Foundation. Spark fornece uma interface para programação de clusters inteiros com implícita paralelismo de dados e tolerância ao erro.



Abaixo estão alguns dos recursos do Apache Spark, que oferecem uma vantagem sobre outras estruturas:

Recursos do Spark - Spark com Python - Edureka

  • Rapidez: É 100x mais rápido do que as estruturas tradicionais de processamento de dados em grande escala.
  • Cache poderoso: A camada de programação simples fornece recursos poderosos de cache e persistência de disco.
  • Desdobramento, desenvolvimento: Pode ser implantado por meio de Mesos, Hadoop via Yarn ou gerenciador de cluster do próprio Spark.
  • Tempo real: Tempo realcomputação e baixa latência por causa da computação na memória.
  • Poliglota: É um dos mais importantesrecursosdeste framework, pois pode ser programado em Scala, Java, Python e R.

Por que escolher o Python?

Embora o Spark tenha sido projetado em escala, o que o torna quase 10 vezes mais rápido do que Python, mas Scala é mais rápido apenas quando o o número de núcleos sendo usados ​​é menor . Como a maioria das análises e processos hoje em dia requerem um grande número de núcleos, a vantagem de desempenho do Scala não é tanta.



Para programadores, Python é comparativamente mais fácil aprender por causa de sua sintaxe e bibliotecas padrão. Além disso, é um linguagem digitada dinamicamente, o que significa que os RDDs podem conter objetos de vários tipos.

Embora Scala tenha SparkMLlib não tem bibliotecas e ferramentas suficientes para aprendizado de máquina e PNL finalidades. Além disso, o Scala carece de visualização de dados.

Treinamento PySpark | Apache Spark com Python | Edureka

Inscreva-se em nosso canal do youtube para obter novas atualizações ..!

Configurando o Spark com Python (PySpark)

Espero que vocês saibam como .Então, uma vez que você descompactado o arquivo spark, instalado e adicionou seu caminho para .bashrc arquivo, você precisa digitarsource .bashrc

export SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 export PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

Para abrir o shell do pyspark, você precisa digitar o comando./bin/pyspark

Faísca na indústria

Apache Spark por causa de seus recursos incríveis, como processamento na memória , poliglota e processamento rápido estão sendo usados ​​por muitas empresas em todo o mundo para diversos fins em vários setores:

Yahoo usa Apache Spark para seus recursos de aprendizado de máquina para personalizar suas notícias, páginas da web e também para publicidade direcionada. Eles usam Spark com python para descobrir que tipo de notícias - os usuários estão interessados ​​em ler e categorizar as notícias para descobrir que tipo de usuários estariam interessados ​​em ler cada categoria de notícias.

TripAdvisor usa o apache spark para aconselhar milhões de viajantes, comparando centenas de sites para encontrar os melhores preços de hotéis para seus clientes. O tempo gasto para ler e processar as avaliações dos hotéis em um formato legível é feito com a ajuda do Apache Spark.

Uma das maiores plataformas de comércio eletrônico do mundo Alibaba executa alguns dos maiores jobs do Apache Spark do mundo para analisar centenas de petabytes de dados em sua plataforma de e-commerce.

PySpark SparkContext e fluxo de dados

Falando em Spark com Python, trabalhar com RDDs é possível pela biblioteca Py4j. O PySpark Shell vincula a API Python ao núcleo do Spark e inicializa o Contexto do Spark. Contexto Spark é o coração de qualquer aplicativo de faísca.

  1. O contexto do Spark configura serviços internos e estabelece uma conexão com um ambiente de execução do Spark.
  2. O objeto sparkcontext no programa de driver coordena todo o processo distribuído e permite a alocação de recursos.
  3. Os gerenciadores de cluster fornecem executores, que são processos JVM com lógica.
  4. O objeto SparkContext envia o aplicativo aos executores.
  5. SparkContext executa tarefas em cada executor.

Caso de uso do PySpark KDD

Agora, vamos dar uma olhada em um caso de uso de Copa KDD’99 (Competição Internacional de Ferramentas de Mineração de Dados e Descoberta de Conhecimento)Aqui, pegaremos uma fração do conjunto de dados porque o conjunto de dados original é muito grande

import urllib f = urllib.urlretrieve ('http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

CRIANDO RDD:
Agora podemos usar este arquivo para criar nosso RDD .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file)

FILTRAGEM:

Suponha que queremos contar quantos normais. interações que temos em nosso conjunto de dados. Podemos filtro nosso RDD raw_data da seguinte maneira.

normal_raw_data = raw_data.filter (lambda x: 'normal.' em x)

CONTAGEM:

Agora podemos contagem quantos elementos temos no novo RDD.

de tempo de importação de tempo t0 = tempo () normal_count = normal_raw_data.count () tt = tempo () - t0 print 'Existem {}' normais 'interações'.format (normal_count) print' Contagem concluída em {} segundos'.format (redondo (tt, 3))

Resultado:

Existem 97.278 interações 'normais'. Contagem concluída em 5.951 segundos

MAPEAMENTO:

Nissocasoqueremos ler nosso arquivo de dados formatado como CSV. Podemos fazer isso aplicando uma função lambda a cada elemento no RDD da seguinte maneira. Aqui vamos usar o transformação map () e take ().

como usar anaconda para python
from pprint import pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Análise concluída em {} segundos '.format (round (tt, 3)) pprint (head_rows [0])

Resultado:

Análise concluída em 1,715 segundos [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normal. ']

SPLITTING:

Agora queremos ter cada elemento no RDD como um par de valores-chave em que a chave é a tag (por exemplo, normal ) e o valor é a lista completa de elementos que representam a linha no arquivo formatado em CSV. Poderíamos proceder da seguinte maneira. Aqui usamos o line.split () e map ().

def parse_interaction (line): elems = line.split (',') tag = elems [41] return (tag, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 Resultado: (u'normal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0,00 ', u'1,00', .... U'normal. '])

A AÇÃO DE COLETA:

Aqui, vamos usar a ação collect (). Ele colocará todos os elementos do RDD na memória. Por esse motivo, deve ser usado com cuidado ao trabalhar com grandes RDDs.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Dados coletados em {} segundos'.format (round (tt, 3))

Resultado:

Dados coletados em 17.927 segundos

Isso levou mais tempo do que qualquer outra ação que usamos antes, é claro. Cada nó de trabalho do Spark que tem um fragmento do RDD deve ser coordenado para recuperar sua parte e reduzir tudo junto.

Como último exemplo combinando todos os anteriores, queremos coletar todos osnormalinterações como pares de valor-chave.

# obter dados do arquivo data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # parse em pares de chave-valor key_csv_data = raw_data.map (parse_interaction) # filter interações de chave normais normal_key_interactions = key_csv_data.filter ( lambda x: x [0] == 'normal.') # coletar todos t0 = tempo () all_normal = normal_key_interactions.collect () tt = tempo () - t0 normal_count = len (all_normal) print 'Dados coletados em {} segundos '.format (round (tt, 3)) print' Existem {} interações 'normais' .format (normal_count)

Resultado:

Dados coletados em 12,485 segundos Existem 97278 interações normais

Então é isso, pessoal!

Espero que você tenha gostado deste blog do Spark com Python. Se você está lendo isso, parabéns! Você não é mais um novato no PySpark. Experimente este exemplo simples em seus sistemas agora.

Agora que você entendeu o básico do PySpark, confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. Edureka's Treinamento de certificação Python Spark usando PySpark foi projetado para fornecer a você o conhecimento e as habilidades necessárias para se tornar um desenvolvedor Spark de sucesso usando Python e prepará-lo para o Exame de certificação Cloudera Hadoop e Spark Developer (CCA175).

Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.