элемент concat two array [row] в карте - PullRequest
0 голосов
/ 04 марта 2019

У меня есть Array [Row]. Я использую case-класс, чтобы отобразить его, чтобы получить 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]

Ожидаемый выходной СДР с регистром класса = ["string1-string2", someLongnum]

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете попробовать это:

Ввод:

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)    
...