scala - GraphX 中具有不同属性的顶点
问题描述
我是 GraphX 的新手,我正在尝试为具有不同属性的图创建顶点。我有一个文件,其中的顶点具有 Id、Type、SongName 和其他具有 Id、Type、Rank、Year 的顶点。它们在同一个文件中。不确定我是否必须拆分它们。我创建了这个 Vertex 类:
class VertexProperty() extends Serializable
case class SongProperty(val vertexType: String, val songName: String) extends VertexProperty
case class BillboardProperty(val vertexType: String, val rank: Int, val year: Int) extends VertexProperty
我正在尝试在这里实现它,但不太确定如何或是否走在正确的轨道上。请问有什么帮助吗?
val BillboardSong: RDD[(VertexId, VertexProperty)] = sc.textFile(vertexBillboardSong).map {
line =>
val row = line.split(",")
(row(0).toLong, row(2))
}
解决方案
对文件中的顶点类型使用模式匹配。假设两种可能的类型是“歌曲”和“广告牌”:
val BillboardSong: RDD[(VertexId, VertexProperty)] = sc.textFile(vertexBillboardSong).map{
line =>
val row = line.split(",")
val id = row(0).toLong
val vertexType = row(1)
val prop = vertexType match {
case "song" => SongProperty(vertexType, row(2))
case "billboard" => BillboardProperty(vertexType, row(2).toInt, row(3).toInt)
}
(id, prop)
}
推荐阅读
- swiftui - SwiftUI:按名称分组数据并显示在展开列表中
- python - 有没有办法可以在不使用循环的情况下多次应用 torch.mode
- javascript - 从 Indoor Bike Data 特征解码蓝牙数据
- c - 为什么不能打开源输入文件“ARMCM3.h”:?使用 ST-link 和 STM32F103ZET6
- python - 从运行 python 启动但不是从 python 脚本的 macOS 终端导入 numpy
- java - 四舍五入到最接近的百分之一
- java - 什么数据结构可以用来存储具有多个可比较属性的对象
- javascript - JS 模块“YAML”不使用文档格式的引号进行字符串化
- java - Amazon Keyspace (Cassandra) 查询没有节点可用于执行查询
- rust - 关于引用的可变性和引用所指值的可变性的一些混淆