[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [geomesa-users] Compilaiton error in Java when applying "map" to an RDD generated via GeoMesaSpark.rdd
|
Hi Luca,
Great question. Sadly, I haven't used Spark from Java, nor have I used
Java 8. That said, from some quick research and knowing Scala, I have a
suggestion to try.
To me, the error is saying that the Java 8 lambda isn't being understood
as a scala.Function1. There may be some way to help cross that gap, but
the Java compiler isn't going to sort that out for you.
Defining the scala.Function1 directly should work though:
import scala.runtime.AbstractFunction1;
public static RDD<Object> loadFromGeoMesaTable(Configuration conf,
SparkContext sc) {
scala.Function1 transform = new
AbstractFunction1<SimpleFeature, Tweet>() {
public Tweet apply(SimpleFeature feature) {
return new Tweet(feature);
}
};
RDD<Object> rddOut = GeoMesaSpark.rdd(conf, sc, null, null, false)
.map( transform,
scala.reflect.ClassTag$.MODULE$.apply(Tweet.class));
return rddOut;
}
At the very least, this should be closer; I was able to get this to compile.
Cheers,
Jim
On 05/08/2015 05:02 AM, Luca Morandini wrote:
I am trying to generate an RDD of Objects from an RDD of
SimpleFeatures, but I was not able to find a way to do it.
Here's the failing code:
public static RDD<Object> loadFromGeoMesaTable(Configuration conf,
SparkContext sc, GeoMesaOptions options) {
RDD<Object> rddOut = GeoMesaSpark.rdd(conf, sc,
TweetFeatureStore.getFeatureType(options).getDataStore(),
null, false)
.map((feat) -> {
return new Tweet(feat);
}, scala.reflect.ClassTag$.MODULE$.apply(Object.class));
return rddOut;
}
Here's the compilation error:
method map in class org.apache.spark.rdd.RDD<T> cannot be applied to
given types;
[ERROR] required:
scala.Function1<org.opengis.feature.simple.SimpleFeature,U>,scala.reflect.ClassTag<U>
[ERROR] found: (feat)->{ [...]t);
},scala.reflect.ClassTag<java.lang.Object>
[ERROR] reason: cannot infer type-variable(s) U,T
[ERROR] (argument mismatch; scala.Function1 is not a functional interface
[ERROR] multiple non-overriding abstract methods found in interface
scala.Function1)
Any help much appreciated,
Luca Morandini
Data Architect - AURIN project
Melbourne eResearch Group
Department of Computing and Information Systems
University of Melbourne
Tel. +61 03 903 58 380
Skype: lmorandini
_______________________________________________
geomesa-users mailing list
geomesa-users@xxxxxxxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
http://www.locationtech.org/mailman/listinfo/geomesa-users