问题描述
在 Java(不是 Scala!)Spark 3.0.1 中有一个 JavaRDD 实例对象 neighborIdsRDD
,它的类型是 JavaRDD<Tuple2<Object,long[]>>
。
我与 JavaRDD 生成相关的部分代码如下:
GraphOps<String,String> graphOps = new GraphOps<>(graph,stringTag,stringTag);
JavaRDD<Tuple2<Object,long[]>> neighborIdsRDD = graphOps.collectNeighborIds(EdgeDirection.Either()).toJavaRDD();
我不得不使用 toJavaRDD()
获取 JavaRDD,因为 collectNeighborIds
返回一个 org.apache.spark.graphx.VertexRDD<long[]>
对象 (VertexRDD doc)。
但是,在我的应用程序的其余部分中,我需要从 Dataset<Row>
对象构建一个 Spark collectNeighborIds
。
将 JavaRDD<Tuple2<Object,long[]>> 转换为 Dataset<Row> 的可能性和最佳方法有哪些?
评论更新:
我根据评论调整了代码:
GraphOps<String,stringTag);
JavaRDD<Tuple2<Object,long[]>> neighborIdsRDD = graphOps.collectNeighborIds(EdgeDirection.Either()).toJavaRDD();
System.out.println("VertexRDD neighborIdsRDD is:");
for (int i = 0; i < neighborIdsRDD.collect().size(); i++) {
System.out.println(
((Tuple2<Object,long[]>) neighborIdsRDD.collect().get(i))._1() + " -- " +
Arrays.toString(((Tuple2<Object,long[]>) neighborIdsRDD.collect().get(i))._2())
);
}
Dataset<Row> dr = spark_session.createDataFrame(neighborIdsRDD.rdd(),Tuple2.class);
System.out.println("converted Dataset<Row> is:");
dr.show();
但我得到一个空的数据集如下:
VertexRDD neighborIdsRDD is:
4 -- [3]
1 -- [2,3]
5 -- [3,2]
2 -- [1,3,5]
3 -- [1,2,5,4]
converted Dataset<Row> is:
++
||
++
||
||
||
||
||
++
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)