Как отобразить массив из класса Case в Spark Scala - PullRequest
0 голосов
/ 02 декабря 2019

Пример данных :( 251 ~ jhon ~ WrappedArray ([STD, Health, Duval]))

case class xyz(id : String, code : String, County : String)

case class rewards(memId : String, name: String, part: Array[xyz])

val df = spark.read.textFile("file:///data/").rdd.map(r => r.split('~'))

val df2 = df.map(x => { rewards(x(0),x(1), Array[rewards.apply()] ) } )

пытались много способов отобразить массив из класса case. попробовал применить функцию

1 Ответ

0 голосов
/ 02 декабря 2019

Я не уверен, что это то, что вы ищете, но вы можете попробовать использовать сопоставление с образцом для преобразования массивов в классы дел.

val data: RDD[rewards] = sc
    .parallelize(Seq("251~jhon~WrappedArray([STD,Health,Duval])"))
    .map(_.split("~"))
    .map{ case Array(id, code, part) => (id, code, part
               .replaceFirst("\\s*WrappedArray\\(\\s*\\[\\s*", "")
               .replaceFirst("\\s*\\]\\s*\\)\\s*", "") 
    )}
    .map{ case (id, name, part) => rewards(id, name, part.split("\\s*,\\s*") match {
         case Array(id, code, county) => Array(xyz(id, code, county)) 
    })}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...