Professional Documents
Culture Documents
Aula01.3bCe240Ce245Ce229CEDS84121c (Apache Spark)
Aula01.3bCe240Ce245Ce229CEDS84121c (Apache Spark)
Aula01.3bCe240Ce245Ce229CEDS84121c (Apache Spark)
2.3a.2/29
Matei Zaharia
2.3a.3/29
Matei Zaharia is a computer scientist and the creator of Apache Spark.[1][2]
2.3a.4/29
Apache Spark – Histórico
2.3a.5/29
Apache Spark – Características
2.3a.6/29
Apache Spark – Componentes
2.3a.7/29
Apache Spark – Componentes
2.3a.8/29
Apache Spark – Componentes
2.3a.10/29
Apache Spark – Programação
2.3a.11/29
Apache Spark – Programação
2.3a.12/29
Apache Spark – RDD
2.3a.13/29
Apache Spark – RDD
lines = sc.textFile("/path/to/README.md")
2.3a.14/29
Apache Spark – RDD – Operações
• Uma Ação realiza uma computação e retorna o resultado (que não é um RDD)
ao Driver Program ou o grava em um meio de armazenamento 2.3a.15/29
Apache Spark – RDD – Operações
Dados
Resultado Ação
Antes de executar a ação, os dados são efetivamente
lidos e as transformações 1 e 2 executadas.
Isso ocorre para evitar manter uma quantidade grande
de dados em memória e para fins de otimização. 2.3a.16/29
Apache Spark – RDD – Operações
• Transformações comuns:
• map – Aplica uma função a um registro
lines = sc.textFile("/path/to/example.csv")
linesSplit = lines.map(lambda line: line.split(","))
2.3a.17/29
Apache Spark – RDD – Operações
lines = sc.textFile("/path/to/words.txt")
words = lines.map(lambda line: line.split(","))
2.3a.18/29
Apache Spark – RDD – Operações
2.3a.19/29
Apache Spark – RDD – Operações
inputRDD = sc.textFile("log.txt")
errorsRDD = inputRDD.filter(lambda x: "error" in x)
2.3a.20/29
Apache Spark – RDD – Operações
2.3a.21/29
Apache Spark – RDD – Operações
2.3a.22/29
Apache Spark – RDD – Operações
• Ações comuns:
• reduce – Função que toma dois registros do RDD, realiza uma operação e
retorna um registro do mesmo tipo. O processo é repetido até que sobre
apenas um registro
sum = rdd.reduce(lambda x, y: x + y)
2.3a.23/29
Apache Spark – RDD – Operações
2.3a.24/29
Apache Spark – RDD – Operações
2.3a.25/29
Apache Spark – RDD – Operações
2.3a.26/29
Apache Spark – RDD – Persistência
result.persist(pyspark.StorageLevel.DISK_ONLY_2)
spark-submit myapp.py
2.3a.28/29
Apache Spark – RDD – Submit
#myapp.py
numAs = logData.filter(logData.value.contains('a')).count()
numBs = logData.filter(logData.value.contains('b')).count()
spark.stop()
2.3a.29/29
Apache Spark – Exemplo
#Calculo da tabela de conversão da transformacao SR
dataset=sc.parallelize([["k", "p"], ["k", "e"], ["n", "e"], ["n", "p"], ["k", "e"],
["n", "e"], ["g", "e"], ["n", "e"], ["p", "p"], ["g", "e"], ["g", "e"]])
positiveValue = "p"
negativeValue = "e"
attributeIndex = 0
targetIndex = 1
p = dataset.map(
lambda x: (
x[attributeIndex],
( 1 if x[targetIndex] == positiveValue else 0,
1 if x[targetIndex] == negativeValue else 0,
1 if x[targetIndex] == positiveValue else 0) ) )
.reduceByKey(
lambda x, y: (
x[0]+y[0],
x[1]+y[1],
1.0 * (x[0] + y[0])/(x[0] + y[0] + x[1] + y[1])
)
)
2.3a.30/29