You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中如何从对象元组数组访问VertexAttributes对象成员?

访问VertexAttributes对象成员的方法

嘿,这事儿其实很简单!你过滤后得到的res94是一个Array[(VertexId, VertexAttributes)]——说白了就是一堆元组,每个元组里第一个元素是顶点ID,第二个就是你定义的VertexAttributes对象。要访问它的成员,直接针对元组里的第二个元素操作就行,给你几种常用的方式:

方式1:遍历整个过滤结果数组

如果你的过滤结果可能有多个顶点,用遍历的方式逐个处理最稳妥:

// 先把过滤结果存成变量方便操作
val filteredVertices = res92.filter{case(k,m) => k == 964088677}.collect

// 遍历每个元组,用模式匹配直接取出顶点ID和属性对象
filteredVertices.foreach { case (vertexId, attrs) =>
  // 直接通过属性对象点出成员变量
  println(s"顶点ID:$vertexId")
  println(s"rootParentCustNumber值:${attrs.rootParentCustNumber}")
  println(s"firstMsgFlg值:${attrs.firstMsgFlg}")
}

方式2:直接取单个结果(如果确定只有一个匹配项)

如果你知道过滤后只会有一个顶点符合条件,可以直接取数组的第一个元素:

val (targetId, targetAttrs) = filteredVertices.head
// 访问成员
println(targetAttrs.rootParentCustNumber)
println(targetAttrs.firstMsgFlg)

⚠️ 小提醒:如果数组为空的话,head会抛出异常,更安全的做法是用headOption:

filteredVertices.headOption.foreach { case (id, attrs) =>
  println(attrs.rootParentCustNumber)
}

原理说明

你的VertexAttributes类里定义的rootParentCustNumber和firstMsgFlg都是公共的val成员,所以只要拿到这个类的实例(也就是元组里的第二个元素),就可以直接用.来访问这些成员变量啦。

内容的提问来源于stack exchange,提问作者Haris Irshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:38:11