首页 > 解决方案 > 连接地图中的两个数组 [行] 元素

问题描述

我有 Array[Row] 我正在使用案例类来映射它以获取 RDD

case class MyClass(string,long)


  sparkSession.sparkContext.
    parallelize(row.map(r1 => 
   MyClass(r1.getString(0).concat(r1.getString(1)),
   r1.getLong(2))))

数组行中有 3 个字段。我想用分隔符“-”连接 1 和 2 字段...r1.getString(0).concat(r1.getString(1))

输入数组 row = ["string1","string2",someLongnum]

case class = ["string1-string2",someLongnum] 的预期输出 RDD

标签: stringapache-sparkconcatenationrddcase-class

解决方案


你可以试试这个:

输入:

val rdd = sc.parallelize(data)
//data: Array[org.apache.spark.sql.Row] = Array([AAA,a,100], [BBB,b,200], [CCC,c,300])


val result = rdd.map(r => myClass(r.getString(0) +'-'+ r.getString(1),r.getLong(2)))
//result: org.apache.spark.rdd.RDD[myClass] = MapPartitionsRDD[15]

输出:

result.collect.foreach(println) 

//myClass(AAA-a,100)
//myClass(BBB-b,200)
//myClass(CCC-c,300)    

推荐阅读