Table of Contents

Apache Spark

Vorteil ggü. MapReduce:

Resilient Distributed Datasets

Workflow:

Erstellen von RDD:

fillde = sc.textFile(“…”, 4)

Transformation:

Spark optimiert die notwendigen Schritte

Beispiele:

rdd = sc.parallelize([1,2,3,4]) rdd.map(lambda x: x * 2); rdd.filter(lambda x: x % 2 == 0)

(Funktionen werden auf die Worker verteilt).

rdd.Map(lambda x: [x, x+5]) 1_6_2_7_3_8 rdd.flatMap(lambda x: [x, x+5]) [1,6,2,7,3,8]

Key-Value Transformationen rdd = sc.parallelize([(1,2), (3,4)])

Beispiel: rdd = sc.parallelize([(1,2), (3,4), (3,6)]) rdd.reduceByKey(lambda a, b: a + b) [(1,2), (3,4), (3,6)] → [(1,2), (3,10)]

rdd2 = sc.parallelize([(1,'a'), (2,'c'), (1,'b')]) rdd.groupByKey() [(1,'a'), (2,'c'), (1,'b')] → [(1,['a','b']), (2,'c')]

Spark Actions

.cache() zum Cachen von Objekten.

Spark Programmlebenszyklus

1. RDDs erstellen 2. RDDs transformieren 3. Cachen 4. Actions ausführen

pySpark SharedVariables

Broadcast Variables:

signPrefixes = sc.broadcast(…) signPrefixes.value

Accumulator:

accum = sc.accumulator(0) … def f(x):

global accum
accum += x

accum.value