在 HDFS 上存储 graphx 顶点并稍后加载

Storing graphx vertices on HDFS and loading later

我创建了一个 RDD:

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 阅读?

回读时需要指定类型

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