我正在使用ElasticSearch-Hadoop库从ElsticSearch提取数据。
JavaPairRDD<String, Map<String, Object>> esRDD = JavaEsSpark.esRDD(sc);
现在我有了JavaPairRDD。我想在此RDD上使用来自MLLib的随机森林。所以我将其转换为JavaPairRDD.toRDD(esRDD)这将给我RDD。使用RDD,我再次转换为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];
我想将trainingData和TestData传递给Random Forest算法,但是它在编译时给出了强制转换异常。
类型不匹配:无法从JavaRDD [Tuple2 [String,Map [String,Object]]] []转换为JavaRDD [LabeledPoint] []
添加小于和大于符号的方括号不起作用
有人可以建议我进行铸造的正确方法吗?我是Spark Datastrucutres的新手。
您在JavaPairRDD列中拥有哪些数据?与常规的RDD不同,JavaPairRDD是第一列和第二列之间的键/值映射。
您可能希望从JavaPairRDD删除第一列,仅返回带有值列的JavaRDD。
为此,只需运行以下命令:
JavaRDD newRDD = esRDD.map(x => x._2);
或等效方法以创建不带第一列的新JavaRDD。