Skip to main content

Spark : Pair RDDs

Pair RDD operations are the real time operations which we use in projects. We can solve all real time issues using pair RDD's. 

In distributed environment, to handle complex problems, we can't go with just value based approach. We should also have a key associated with it.

Remember in Map Reduce, internal calls will happen using record which is a Key, Value pair. In RDBMS, multiple columns will be available associate to one primary key.
Record  <key, Value>  Values can be multiple but it will associate with a Key

Example :

scala> val namesrdd = sc.parallelize(List("raj", "venkat", "sunil", "kalyan", "anvith", "raju", "dev", "hari"), 2)
namesrdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[38] at parallelize at <console>:23

scala> val prdd1 =namesrdd.map(x => (x, x))
prdd1: org.apache.spark.rdd.RDD[(String, String)] = MapPartitionsRDD[39] at map at <console>:23

scala> val prdd2 =namesrdd.map(x => (x, x, x))
prdd2: org.apache.spark.rdd.RDD[(String, String, String)] = MapPartitionsRDD[40] at map at <console>:23


Example for creating a paired RDD :

scala> val prdd3 = namesrdd.map(x => (x.length, x))
prdd3: org.apache.spark.rdd.RDD[(Int, String)] = MapPartitionsRDD[41] at map at <console>:23

scala> prdd3.collect().foreach(println)
(3,raj)
(6,venkat)
(5,sunil)
(6,kalyan)
(6,anvith)
(4,raju)
(3,dev)
(4,hari)

Another couple of examples for pair RDD :

scala> val prdd3 = namesrdd.keyBy(x => x.length)
prdd3: org.apache.spark.rdd.RDD[(Int, String)] = MapPartitionsRDD[42] at keyBy at <console>:23

scala> prdd3.collect().foreach(println)
(3,raj)
(6,venkat)
(5,sunil)
(6,kalyan)
(6,anvith)
(4,raju)
(3,dev)
(4,hari)

scala> val prdd3 = namesrdd.groupBy(x => x.length)
prdd3: org.apache.spark.rdd.RDD[(Int, Iterable[String])] = ShuffledRDD[44] at groupBy at <console>:23

scala> prdd3.collect().foreach(println)
(4,CompactBuffer(raju, hari))
(6,CompactBuffer(venkat, kalyan, anvith))
(3,CompactBuffer(raj, dev))
(5,CompactBuffer(sunil))



Thanks,
Arun Mathe
Email ID : arunkumar.mathe@gmail.com

Comments

Popular posts from this blog

(AI #1) Deep Learning and Neural Networks

I was curious to learn Artificial Intelligence and thinking what is the best place to start learning, and then realized that Deep Learning and Neural Networks is the heart of AI. Hence started diving into AI from this point. Starting from today, I will write continuous blogs on AI, especially Gen AI & Agentic AI. Incase if you are interested on above topics then please watch out this space. What is Artificial Intelligence, Machine Learning & Deep Learning ? AI can be described as the effort to automate intellectual tasks normally performed by Humans. Is this really possible ? For example, when we see an image with our eyes, we will identify it within a fraction of milliseconds. Isn't it ? For a computer, is it possible to do the same within same time limit ? That's the power we are talking about. To be honest, things seems to be far advanced than we actually thing about AI.  BTW, starting from this blog, it is not just a technical journal, we talk about internals here. ...

(AI #3) Deep Learning Foundations - Activation & Loss Functions, Gradient Descent algorithms & Optimization techniques

It is extremely important to have a deep knowledge while designing a machine learning model, otherwise we will end up creating ML models which are of no use. We have to have a clear understanding on certain techniques to confidently build a ML model, train it using "training data", finalize the model and to deploy it in production. So far, from blog #1, #2, we have seen about the fundamentals of Deep Learning and Neural Network, architecture of a Neural Network, internal layers and components etc.  Providing the links of Blogs #1 , #2 below for quick reference. Deep Learning & Neural Networks : https://arunsdatasphere.blogspot.com/2026/01/deep-learning-and-neural-networks.html Building a real world neural network: A practical usecase explained : https://arunsdatasphere.blogspot.com/2026/01/building-real-world-neural-network.html Now let's dive through below concepts/criteria to help gaining confidence on building your ML model: Activation Functions (Forward Propaga...

Spark Core : Understanding RDD & Partitions in Spark

Let us see how to create an RDD in Spark.   RDD (Resilient Distributed Dataset): We can create RDD in 2 ways. From Collections For small amount of data We can't use it for large amount of data From Datasets  For huge amount of data Text, CSV, JSON, PDF, image etc. When data is large we should go with Dataset approach     How to create an RDD ? Using collections val list = List(1, 2, 3, 4, 5, 6) val rdd = sc.parallelize(list) SC is Spark Context parallelize() method will convert input(collection in this case) into RDD Type of RDD will be based on the values assigned to collection, if we assign integers and RDD will be of type int Let's see below Scala code : # Created an RDD by providing a Collection(List) as input scala> val rdd = sc.parallelize(List(1, 2, 3, 4, 5)) rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:23 # Printing RDD using collect() method scala> rdd.collect() res0: Array[Int] = Array(1, 2, 3, 4...