2016-12-05 18 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")