O RDD (Resilient Distributed Dataset) é uma coleção tolerante a falhas de elementos de dados que podem ser acessados de forma distribuída. Essas coleções de elementos são redimensionadas pelos nós do Cluster e podem efetuar operações de forma paralela, se tornando a estrutura básica no qual o Apache Spark usa para tratamento de dados.
Para execução do exercício abaixo é necessário a preparação do ambiente indicado neste post: https://slothbigdata.blogspot.com/2019/07/ambiente-para-rodar-o-spark-com-scala.html.
- Para primeira etapa vamos criar uma classe do scala: WordFilter.scala
- Segundo tópico vamos instanciar a configuração e uma sessão do Spark(SparkContext utilizado na versão 1.6 após a 2.0 é possível instanciar a sessão com o SparkSession)
val sparkConf = new SparkConf().setAppName("Spark Pi").setMaster("local")
val sc = new SparkContext(sparkConf)
- Para ler o arquivo vamos utilizar o método do SparkContext denominado textFile e informar a localização do arquivo "dados1_word_count.txt" baixado no post acima.
val textFile = sc.textFile("C:\\diretorio\\ dados1_word_count.txt")
Resultado: textFile
- Para separar as palavras utilizando o método flatMap passando um processo de split no parâmetro da função. O resultado será um RDD com Strings de palavras.
val palavras = textFile.flatMap(line => line.split(" "))
Resultado: palavras
- Para a próxima função do RDD utilizaremos um filtro para todas a palavras "camisa", assim na função devemos enviar um parâmetro boleano.
val filtro = palavras.filter(palavra => palavra.equals("camisa"))
Resultado: filtro
Segue o código completo da aplicação:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.{DataFrame, SparkSession}
object WordFilter {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("Spark Pi").setMaster("local")
val sc = new SparkContext(sparkConf)
println("###Metodo textFile: RDD da
leitura do dado do arquivo ##")
val textFile = sc.textFile("C:\\diretorio\\ dados1_word_count.txt")
for(resultado <- textFile.collect()){
println(resultado)
}
println("###Metodo flatMap: RDD no
qual sera enviado um array das palavras##")
val palavras = textFile.flatMap(line => line.split(" "))
for(resultado <- palavras.collect()){
println(resultado)
}
println("###Metodo filter: RDD
filtrado (envio do parametro pelo booleano) ##")
val filtro = palavras.filter(palavra => palavra.equals("camisa"))
for(resultado <- filtro.collect()){
println(resultado)
}
}
}
Em caso de dúvidas ou sugestões, escreva nos comentários ou nos mande um email: slothbigdata@gmail.com.
Nenhum comentário:
Postar um comentário