Spark - Scala

Context

spark = Spark SQL Context
sc = SparkContext

Basic blocks

  • RDD = resilient distributed dataset = collection of distributed data elements

  • DS = dataset = collection of distributed data elements

  • DF = dataframe = dataset with named columns (schema)

RDD

https://spark.apache.org/docs/2.2.0/rdd-programming-guide.html

Creation

  • declare data

val data = Array(1,3,4,5)
val rddData = sc.parallelize(data)
  • from file

val dataFS = sc.textFile("file:///...")
val dataHDFS = sc.textFile("hdfs:///..")
  • sql?

Operations

Operations are lazy on spark, and the more the merrier, so that the optimizer can better tune the DAG

Transformations

Create a new RDD by applying an operation. Doesn't trigger an execution

  • map(f: (A) ⇒B) = apply the function for each item

rdd.map(_ => _ + 2)
  • flatMap(f: (A) ⇒B) = flatten the data structure(tuple2 or whatever) and apply function for each item

rdd.flatMap(_ => _ + 3)
  • filter(f: (A) ⇒Boolean) = keep only the data for which the lambda returns true

rdd.filter(_ => _ % 2 == 0) // keep
  • Actions

Return the value to the driver after the final computation on the data. Triggers an execution

DF

https://spark.apache.org/docs/2.2.0/sql-programming-guide.html

Last updated

Was this helpful?