Wordcount com PySpark
Link da documentação oficial do Hadoop:
http://hadoop.apache.org/
Link do meu Github:
https://github.com/toticavalcanti
Essa aula é uma continuação da passada, vamos fazer a mesma coisa executar só que ao invés de digitar comando por comando no Shell PySpark como fizemos na aula passada, iremos salvar o script inteiro em um arquivo .py, podemos chamá-lo de WordCount.py, e rodar ele utilizando:
spark-submit WordCount.py
E teremos o mesmo resultado.
O script inteiro ( WordCount.py ) é mostrado abaixo, é só copiar e colar ou baixar no meu Github:
from pyspark import SparkContext, SparkConf
#Cria a app com o nome WordCount
conf = SparkConf().setAppName("WordCount")
#Instacia o SparkContext
sc = SparkContext.getOrCreate()
#Cria o RDD com o conteúdo do shakespeare.txt
contentRDD = sc.textFile("/user/toti/textos/shakespeare.txt")
#Elimina as linha em branco
filter_empty_lines = contentRDD.filter(lambda x: len(x) > 0)
#Splita as palavras pelo espaço em branco entre elas
words = filter_empty_lines.flatMap(lambda x: x.split(' '))
#Map-Reduce da contagem das palavras
wordcount = words.map(lambda x:(x,1)) \
.reduceByKey(lambda x, y: x + y) \
.map(lambda x: (x[1], x[0])).sortByKey(False)
#Imprime o resultado
for word in wordcount.collect():
print(word)
#Salva o resultado no HDFS dentro da pasta /user/toti/textos/Wordcount/
wordcount.saveAsTextFile("/user/toti/textos/Wordcount")
Depois de baixar ou criar um arquivo colar e salvar como WordCount.py, vamos copiar ele para o sistema de arquivo local da máquina cloudera.
Dentro da pasta /Toti, vamos criar outra pasta no mesmo nível da pasta textos, chamada scripts, dentro uma sub-pasta chamada PySpark.
Para isso vamos abrir um putty, conectar a máquina cloudera como usuário root, password cloudera e usar os comandos:
#Para ir para a raiz do sistema de arquivos local da máquina cloudera use:
cd /
#Para entrar na pasta /Toti use:
cd Toti
#Para criar a pasta /Toti/scripts/PySpark
mkdir -p scripts/PySpark
Agora vamos usar o WINSCP para copiar o WordCount.py da nossa máquina física, para essa pasta PySpark na máquina cloudera.
Depois disso, vamos entrar na pasta onde jogamos o WordCount.py, ou seja, /Toti/scripts/PySpark
Agora é só rodar o script com:
spark-submit WordCount.py