gpt4 book ai didi

java - 将 JavaPairRDD 转换为 JavaRDD

转载 作者:行者123 更新时间:2023-12-02 00:48:15 30 4
gpt4 key购买 nike

我正在使用 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];

我想将训练数据和测试数据传递给随机森林算法,但它在编译时给出转换异常。

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

添加方括号,因为小于和大于符号不起作用

有人可以建议我正确的类型转换方法吗?我是 Spark Datastrucutres 的新手。

最佳答案

JavaPairRDD 列中有哪些数据? JavaPairRDD 是第一列和第二列之间的键/值映射,与普通 RDD 不同。

您可能希望从 JavaPairRDD 中删除第一列,只返回包含值列的 JavaRDD。

为此,只需运行如下命令:

JavaRDD newRDD = esRDD.map(x => x._2);

或相当于创建一个没有第一列的新 JavaRDD。

关于java - 将 JavaPairRDD 转换为 JavaRDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33012068/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com