![](/img/trans.png)
[英]How to process a nested Key Value Pair in Spark / Scala data import
[英]Getting the key of a key/value pair in Scala/Spark
我在 Scala/Spark 中使用箭头运算符创建了一个键值对:
val picardsShip = "Picard" -> "Enterprise-D"
我使用println(picardsShip._2)
提取了该值,并按预期返回了Enterprise-D
值。 但是,我想在这种情况下提取密钥以获取Picard
。 当我输入picardsShip.
在我使用的 IntelliJ IDEA 编辑器中,我没有看到任何暗示明显的属性或方法来获取密钥的内容。 有任何想法吗? 谢谢你。
这里要小心,您还没有创建键/值对。 你已经创建了一个元组。 当您使用 REPL 时,您可以看到发生了什么:
scala> val picardsShip = "Picard" -> "Enterprise-D"
picardsShip: (String, String) = (Picard,Enterprise-D)
要访问第一个值,请使用@Krzysztof Atłasik 建议并使用._1
:
scala> picardsShip._1
res1: String = Picard
是的,您可以使用->
运算符创建键/值对,但是如果您希望它像拥有键/值对一样对其进行操作 - 您必须通过将其包装在映射中来更加具体。 然后你不再有 1 个键/值对,但理论上没有到很多键值对,这意味着你基本上有一种Seq
,这是 Scala 真正围绕它构建的。 Map
使您可以访问一个 API,该 API 基本上说“好吧,这里有一系列可以被视为键值对的项目”,并允许您按照您期望的键值对查看的方式对其进行操作:
scala> val shipMap: Map[String, String] = Map(("Picard" -> "Enterprise-D"))
shipMap: Map[String,String] = Map(Picard -> Enterprise-D)
scala> shipMap("Picard")
res2: String = Enterprise-D
scala> shipMap.keys.head
res3: String = Picard
scala> shipMap.foreach( kv => println(kv._1))
Picard
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.