Apache Spark Scala Interview Questions- Shyam Mallesh Today

val rdd = sc.parallelize(1 to 4) rdd.map(x => x * 2) // 2,4,6,8 rdd.flatMap(x => 1 to x) // 1,1,2,1,2,3,1,2,3,4 rdd.mapPartitions(iter => iter.map(_ * 2)) // same as map but per partition Spark uses lineage (RDD dependency graph). Each RDD remembers how it was built from other datasets. If a partition is lost, Spark recomputes it using the lineage, not replication. However, you can also cache/persist with replication (e.g., StorageLevel.MEMORY_AND_DISK_2 ).

val df = spark.read.option("inferSchema", "true").json("data.json") Apache Spark Scala Interview Questions- Shyam Mallesh

⚠️ coalesce(1) avoids shuffle but may cause data skew. Only safe if current partitions are small. With schema inference (slow but automatic): val rdd = sc

val rdd = sc.textFile("data.txt") // nothing read yet val words = rdd.flatMap(_.split(" ")) // transformation val counts = words.map(w => (w, 1)).reduceByKey(_ + _) // transformation counts.saveAsTextFile("output") // 🔥 Action triggers job | Operation | Shuffle Behavior | Performance | |----------------|------------------|--------------| | groupByKey | Sends all values for a key across the network → high shuffle I/O | Slower, risks OOM | | reduceByKey | Combines values locally (map-side reduce) before shuffle → reduces data transfer | Faster, memory efficient | However, you can also cache/persist with replication (e

import org.apache.spark.sql.types._ val schema = StructType(Seq( StructField("name", StringType), StructField("age", IntegerType), StructField("address", StructType(Seq( StructField("city", StringType), StructField("zip", LongType) ))) ))