2016-12-05 19 views
0

我创建RDD:存储graphx顶点后

val verticesRDD: RDD[(VertexId, Long)] = vertices

我可以检查它,一切正常:

verticesRDD.take(3).foreach(println) 
(4000000031043205,1) 
(4000000031043206,2) 
(4000000031043207,3) 

我这个RDD保存到HDFS通过:

verticesRDD.saveAsObjectFile("location/vertices")

我再尝试读取这个文件,以确保它的工作:

val verticesRDD_check = sc.textFile("location/vertices")

这工作得很好,但是当我尝试和检查,什么是错的。

verticesRDD_check.take(2).foreach(println) 
    SEQ!org.apache.hadoop.io.NullWritable"org.apache.hadoop.io.BytesWritablea��:Y4o�e���v������ur[Lscala.Tuple2;.���O��xp 
srscala.Tuple2$mcJJ$spC�~��f��J _1$mcJ$spJ _2$mcJ$spxr 
                  scala.Tuple2�}��F!�L_1tLjava/lang/Object;L_2q~xppp5���sq~pp5���sq~pp5���sq~pp5���sq~pp5���esq~pp5���hsq~pp5��୑sq~pp5���sq~pp5���q sq~pp5��ஓ 

使用saveAsObjectFile保存RDD的方式有问题吗?还是通过textFile阅读?

回答

0

当你读回来时,你需要指定类型。

val verticesRDD : RDD[(VertexId, Long)] = sc.objectFile("location/vertices")