将 JavaPairRDD 转换为 JavaRDD
Convert JavaPairRDD to JavaRDD
我正在使用 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 传递给随机森林算法,但它在编译时给出了转换异常。
Type mismatch: cannot convert from
JavaRDD[Tuple2[String,Map[String,Object]]][] to
JavaRDD[LabeledPoint][]
添加方括号是因为小于号和大于号不起作用
谁能告诉我正确的 Casting 方法。我是 Spark Datastrucutres 的新手。
JavaPairRDD 列中有哪些数据?与普通 RDD 不同,JavaPairRDD 是第一列和第二列之间的 key/value 映射。
您可能想要从 JavaPairRDD 中删除第一列,只返回带有值列的 JavaRDD。
为此,只需 运行 类似:
JavaRDD newRDD = esRDD.map(x => x._2);
或相当于创建一个没有第一列的新 JavaRDD。
我正在使用 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 传递给随机森林算法,但它在编译时给出了转换异常。
Type mismatch: cannot convert from JavaRDD[Tuple2[String,Map[String,Object]]][] to JavaRDD[LabeledPoint][]
添加方括号是因为小于号和大于号不起作用
谁能告诉我正确的 Casting 方法。我是 Spark Datastrucutres 的新手。
JavaPairRDD 列中有哪些数据?与普通 RDD 不同,JavaPairRDD 是第一列和第二列之间的 key/value 映射。
您可能想要从 JavaPairRDD 中删除第一列,只返回带有值列的 JavaRDD。
为此,只需 运行 类似:
JavaRDD newRDD = esRDD.map(x => x._2);
或相当于创建一个没有第一列的新 JavaRDD。