# Convert JavaPairRDD to JavaRDD

**URL:** <https://discuss.elastic.co/t/convert-javapairrdd-to-javardd/31834>\
**Category:** Elasticsearch\
**Tags:** es-hadoop\
**Created:** [October 8, 2015, 9:45am UTC](https://discuss.elastic.co/t/convert-javapairrdd-to-javardd/31834 "2015-10-08T09:45:04Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sar82](https://avatars.discourse-cdn.com/v4/letter/s/8491ac/32.png) [@Sar82](https://discuss.elastic.co/u/Sar82)\
**Post date:** [October 8, 2015, 9:45am UTC](https://discuss.elastic.co/t/convert-javapairrdd-to-javardd/31834/1 "2015-10-08T09:45:04Z")

</div>

I am fetching data from ElsticSearch using ElasticSearch-Hadoop Library.

```
JavaPairRDD<String, Map<String, Object>> esRDD = JavaEsSpark.esRDD(sc);

```

Now I have JavaPairRDD. I want to use Random Forest from MLLib on this RDD. So I am converting it to JavaPairRDD.toRDD(esRDD) this will give me RDD. Using RDD I am converting agian to JavaRDD

```
JavaRDD<LabeledPoint>[] splits = (JavaRDD.fromRDD(JavaPairRDD.toRDD(esRDD),
            esRDD.classTag())).randomSplit(new double[] { 0.5, 0.5 });

JavaRDD<LabeledPoint> trainingData = splits[0];
JavaRDD<LabeledPoint> testData = splits[1];

```

I want to pass trainingData and TestData to Random Forest algorithm but it gives casting exception at compile time.

```
Type mismatch: cannot convert from JavaRDD[Tuple2[String,Map[String,Object]]][] to JavaRDD[LabeledPoint][]

```

Added square brackets as less than and greater than signs are not working  
Could any one suggest me the proper way for Casting. I am new to Spark Datastrucutres.

---

<div class="post-metadata">

**Author:** ![costin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/costin/32/44950_2.png) [@costin](https://discuss.elastic.co/u/costin)\
**Post date:** [October 10, 2015, 11:52am UTC](https://discuss.elastic.co/t/convert-javapairrdd-to-javardd/31834/2 "2015-10-10T11:52:31Z")

</div>

The connector returns documents - if you need to convert them to a certain structure (like in your case `LabeledPoint`) then simply apply a map operation with your custom function; this is exactly the type of case for which Spark was designed and where `RDD`s and lazy collections / functional programming excels.

---

<div class="post-metadata">

**Author:** ![Sar82](https://avatars.discourse-cdn.com/v4/letter/s/8491ac/32.png) [@Sar82](https://discuss.elastic.co/u/Sar82)\
**Post date:** [October 13, 2015, 2:12pm UTC](https://discuss.elastic.co/t/convert-javapairrdd-to-javardd/31834/3 "2015-10-13T14:12:05Z")

</div>

Thanks costin. It worked!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:27pm UTC](https://discuss.elastic.co/t/convert-javapairrdd-to-javardd/31834/4 "2017-07-06T13:27:23Z")

</div>


