繁体   English   中英

如何使用Spark在Scala中返回多列键和值对

[英]How do I return Multi-Column Key and Value pairs in Scala using Spark

我想将下面的RDD转换为键值对,每个键具有两个值。 第一列应为键,第二和第三列应为值。 如何在Scala中使用Case类执行转换?

scala> input
res31: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = MapPartitionsRDD[60] at rdd at <console>:35

scala> input.take(5).foreach(println)
[Ace,Ball,null]
[Kids,Kids,null]
[Hardware,Hardware,null]
[Market,Market,Markets]
[Adventure,Adventure,null]

预期的O / P:我期望键值对非常像Python字典。 一个键将包含多个值,因此这些值将是一个元组。 一旦有了键值对,就可以基于键i提取值。

例如

d = {key1: [val1, val2, val3....], key2: [valx, valy, valz, ...], ....}

d[key1][0]给出key1的第一个值

希望我能清楚表达我的要求

您可以使用Tuple2 假设您希望将输出显示为:

(Ace, (Ball, null))
(Kids, (Kids, null))
..
(Adventure, (Adventure, null))

您可以尝试以下方法:

val output = input.map(x => Tuple2(x.getString(0), (x.getString(1), x.getString(2))))
output.take(5).foreach(println)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM