Tutorial PySpark - Aprenda Apache Spark usando Python



Neste blog no Tutorial do PySpark, você aprenderá sobre a API PSpark que é usada para trabalhar com o Apache Spark usando a linguagem de programação Python.

Em um mundo onde os dados estão sendo gerados em uma taxa tão alarmante, a análise correta desses dados no momento correto é muito útil. Uma das estruturas mais incríveis para lidar com big data em tempo real e realizar análises é o Apache Spark.Juntos, ou PySpark é um dos cursos de certificação mais procurados, dando ao Scala for Spark uma corrida por seu dinheiro. Então neste Tutorial PySpark blog, discutirei os seguintes tópicos:





Tutorial do PySpark: O que é PySpark?

Apache Spark é uma estrutura de computação em cluster rápida que é usada para processar, consultar e analisar Big data. Por ser baseado em computação In-memory, tem uma vantagem sobre vários outros frameworks de big data.

Recursos do PySpark - Tutorial do PySpark - Edureka



Originalmente escrito em Scala Programming Language, a comunidade de código aberto desenvolveu uma ferramenta incrível para suportar Python para Apache Spark. PySpark ajuda cientistas de dados a interagir com RDDs no Apache Spark e Python por meio de sua biblioteca Py4j. Existem muitos recursos que tornam o PySpark uma estrutura melhor do que outras:

  • Rapidez: É 100x mais rápido do que as estruturas tradicionais de processamento de dados em grande escala
  • Cache poderoso: Camada de programação simples oferece 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: Computação em tempo real e baixa latência devido à computação na memória
  • Poliglota: Suporta programação em Scala, Java, Python e R

Vamos seguir em frente com nosso blog de tutorial do PySpark e ver onde o Spark é usado na indústria.

PySpark na indústria

Cada setor gira em torno de Big Data e onde há Big Data, há Análise envolvida. Então, vamos dar uma olhada nas várias indústrias onde o Apache Spark é usado.



Metade é uma das maiores indústrias que está crescendo em direção ao streaming online. Netflix usa Apache Spark para processamento de stream em tempo real para fornecer recomendações online personalizadas para seus clientes. Processa 450 bilhões eventos por dia que fluem para aplicativos do lado do servidor.

Finança é outro setor onde o processamento em tempo real do Apache Spark desempenha um papel importante. Os bancos estão usando o Spark para acessar e analisar os perfis de mídia social, para obter insights que podem ajudá-los a tomar decisões de negócios corretas para avaliação de risco de crédito , anúncios direcionados e segmentação de clientes. A rotatividade de clientes também é reduzido usando Spark. Detecção de fraude é uma das áreas de aprendizado de máquina mais amplamente utilizadas em que o Spark está envolvido.

Cuidados de saúde provedores estão usando Apache Spark para Analisar registros de pacientes junto com dados clínicos anteriores para identificar quais pacientes têm maior probabilidade de enfrentar problemas de saúde após terem alta da clínica. Apache Spark é usado em Sequenciamento Genômico para reduzir o tempo necessário para processar os dados do genoma.

Varejo e comércio eletrônico é uma indústria onde não se pode imaginar funcionando sem o uso de Análise e Publicidade Direcionada. Uma das maiores plataformas de comércio eletrônico da atualidade Alibaba executa alguns dos maiores trabalhos do Spark no mundo para analisar petabytes de dados. Alibaba se apresenta extração de características em dados de imagem. eBay usa Apache Spark para fornecer Ofertas direcionadas , aprimore a experiência do cliente e otimize o desempenho geral.

Viagem As indústrias também usam o Apache Spark. TripAdvisor , um site de viagens líder que ajuda os usuários a planejar uma viagem perfeita está usando o Apache Spark para acelerar seu recomendações personalizadas de clientes .TripAdvisor usa Apache Spark para aconselhar milhões de viajantes por comparando centenas de sites para encontrar os melhores preços de hotéis para seus clientes.

Um aspecto importante deste Tutorial do PySpark é entender por que precisamos usar o Python. Por que não Java, Scala ou R?

como usar substring em sql

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


Por que escolher o Python?

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

Um vasto conjunto de bibliotecas: Scala não tem ferramentas e bibliotecas de ciência de dados suficientes como Python para aprendizado de máquina e processamento de linguagem natural. Além disso, Scala carece de boa visualização e transformações de dados locais.

Grande apoio da comunidade: Python tem uma comunidade global com milhões de desenvolvedores que interagem online e offline em milhares de locais virtuais e físicos.

Um dos tópicos mais importantes neste Tutorial do PySpark é o uso de RDDs. Vamos entender o que são RDDs

Spark RDDs

Quando se trata de computação distribuída iterativa, ou seja, processamento de dados em vários trabalhos em cálculos, precisamos reutilizar ou compartilhar dados entre vários trabalhos. Estruturas anteriores, como Hadoop, tiveram problemas ao lidar com várias operações / trabalhos como

  • Armazenamento de dados em armazenamento intermediário, como HDFS
  • Vários trabalhos de E / S tornam os cálculos lentos
  • Replicações e serializações que por sua vez tornam o processo ainda mais lento

Os RDDs tentam resolver todos os problemas habilitando cálculos na memória distribuídos com tolerância a falhas. RDD é a abreviação de Conjuntos de dados distribuídos resilientes. RDD é uma abstração de memória distribuída que permite aos programadores realizar cálculos na memória em grandes clusters de maneira tolerante a falhas. Eles são o coleção somente leitura de objetos particionado em um conjunto de máquinas que podem ser reconstruídas se uma partição for perdida. Existem várias operações realizadas em RDDs:

  • Transformações: As transformações criam um novo conjunto de dados a partir de um existente. Avaliação Preguiçosa
  • Ações: O Spark força os cálculos para execução apenas quando as ações são invocadas nos RDDs

Vamos entender algumas transformações, ações e funções

Ler um arquivo e exibir os n principais elementos:

rdd = sc.textFile ('file: /// home / edureka / Desktop / Sample') rdd.take (n)

Resultado:

[u'O desmatamento surge como a principal questão ambiental e social que agora assumiu a forma de mais do que um demônio poderoso. ', u'Precisamos saber sobre as causas, efeitos e formas de resolver os problemas surgidos com o desmatamento. ', u' Disponibilizamos muitos parágrafos, ensaios longos e curtos sobre o desmatamento, a fim de ajudar seus filhos e crianças a se conscientizarem sobre o problema e também participarem do concurso de redação na escola ou fora dela. ', u'Você pode selecionar qualquer ensaio de desmatamento fornecido abaixo de acordo com o padrão da classe. ', u'O desmatamento surge como o maior problema global para a sociedade e o meio ambiente.']

Convertendo para minúsculas e dividindo: (Abaixar e Dividir)

def Func (linhas): lines = lines.lower () lines = lines.split () retornar linhas rdd1 = rdd.map (Func) rdd1.take (5)

Resultado:

[[u'desflorestamento ', u'is', u'arising ', u'as', u'the ', u'main', u'ambiental ', u'and', u'social ', u'issue ', u'qual', u'has ', u'agora', u'qualquer ', ...... . . ]

Removendo StopWords: (Filtro)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Eu', 'eu', 'por que', 'com'] rdd2 = rdd1.filter (lambda z: z não está em stop_words) rdd2.take (10)

Resultado:

[u'desflorestamento ', u'arizante', u'main ', u'ambiental', u'social ', u'issue', u'que ', u'has', u'agora ', u'tornou' ]

Soma dos números de 1 a 500: (reduzir)

sum_rdd = sc.parallelize (range (1.500)) sum_rdd.reduce (lambda x, y: x + y)

Resultado:

converter binário para decimal java
124750

Aprendizado de máquina com PySpark

Continuando nosso Tutorial do PySpark Blog, vamos analisar alguns dados do BasketBall e fazer previsões futuras. Então, aqui vamos usar os dados do basquete de todos os jogadores da NBA desde 1980 [ano de introdução de 3 Ponteiros].

Carregando dados:

df = spark.read.option ('header', 'true') .option ('inferSchema', 'true') .csv ('file: ///home/edureka/Downloads/season_totals.csv')

Impressão de colunas:

imprimir (df.colunas)

Resultado:

['_c0', 'jogador', 'pos', 'idade', 'equipe_id', 'g', 'gs', 'mp', 'fg', 'fga', 'fg_pct', 'fg3', ' fg3a ',' fg3_pct ',' fg2 ',' fg2a ',' fg2_pct ',' efg_pct ',' ft ',' fta ',' ft_pct ',' orb ',' drb ',' trb ',' ast ' , 'stl', 'blk', 'tov', 'pf', 'pts', 'yr']

Classificação de jogadores (OrderBy) e toPandas:

Aqui, estamos classificando os jogadores com base nos pontos marcados em uma temporada.

df.orderBy ('pts', ascending = False) .limit (10) .toPandas () [['yr', 'player', 'age', 'pts', 'fg3']]

Resultado:

Usando DSL e matplotlib:

Aqui estamos analisando o número médio de Tentativas de 3 pontos para cada temporada em um limite de tempo de 36 min [um intervalo correspondente a um jogo da NBA completo aproximado com descanso adequado]. Calculamos essa métrica usando o número de tentativas de arremesso de 3 pontos (fg3a) e minutos jogados (mp) e, em seguida, plotamos o resultado usando matlplotlib .

perguntas da entrevista do cientista de dados do Google
from pyspark.sql.functions import col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')) .orderBy ('ano') de matplotlib importar pyplot como plt importar seaborn como sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Ano') _ = plt.title ('Média do jogador Tentativas de 3 pontos (por 36 minutos) ') plt.annotate (' 3 ponteiros introduzidos ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gray ', encolher = 0, largura de linha = 2)) plt.annotate (' NBA movido em linha de 3 pontos ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'cinza', reduzir = 0, largura de linha = 2)) plt.annotate ('NBA moveu a linha de 3 pontos para trás', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (facecolor = 'cinza', encolher = 0, largura de linha = 2))

Resultado:

Regressão Linear e VectorAssembler:

Podemos ajustar um modelo de regressão linear a esta curva para modelar o número de tentativas de tiro para os próximos 5 anos. Temos que transformar nossos dados usando a função VectorAssembler em uma única coluna. Isto é um requerimento para a regressão linear API em MLlib.

from pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

Resultado:

Modelo de construção:

Em seguida, construímos nosso objeto de modelo de regressão linear usando nossos dados transformados.

from pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (treinamento)

Aplicando o modelo treinado ao conjunto de dados:

Aplicamos nosso modelo de modelo de objeto treinado ao nosso conjunto de treinamento original, juntamente com 5 anos de dados futuros

from pyspark.sql.types import Row # apply model para a temporada 1979-80 a 2020-21 training_yrs = training.select ('yr'). rdd.map (lambda x: x [0]). collect () training_y = training.select ('fg3a_p36m'). rdd.map (lambda x: x [0]). collect () prediction_yrs = [2017, 2018, 2019, 2020, 2021] all_yrs = training_yrs + prediction_yrs # teste construído DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # aplicar modelo de regressão linear df_results = model.transform (all_years_features) .toPandas ()

Traçando a previsão final:

Podemos então plotar nossos resultados e salvar o gráfico em um local especificado.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', rótulo = Nenhum) plt.xlabel (' Ano ') plt.ylabel (' Número de tentativas ') plt.legend (loc = 4) _ = plt.title (' Média de tentativas do jogador de 3 pontos (por 36 minutos) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Resultado:

E com este gráfico, chegamos ao final deste Blog do tutorial do PySpark.

Então é isso, pessoal!

Espero que vocês tenham uma ideia do que é PySpark, por que Python é mais adequado para Spark, os RDDs e um vislumbre do aprendizado de máquina com Pyspark neste blog de tutorial do PySpark. Parabéns, você não é mais um novato no PySpark. Se você quiser saber mais sobre o PySpark e entender os diferentes casos de uso da indústria, dê uma olhada em nosso Spark com Python Blog.

Agora que você entendeu o que é Pyspark, verifique 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 de desenvolvedor Cloudera Hadoop e Spark (CCA175).