如何从Spark Scala中的Case类映射数组

如何从Spark Scala中的Case类映射数组,scala,apache-spark,Scala,Apache Spark,样本数据: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('~'))

样本数据: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类映射数组。已尝试应用函数

我不确定您正在寻找的是什么,但您可以尝试使用模式匹配将数组转换为case类

val数据:RDD[奖励]=sc .parallelizeSeq251~jhon~WrappedArray[STD,Health,Duval] .map\uu.split~ .map{case Arrayid,code,part=>id,code,part .replaceFirst\\s*WrappedArray\\\\s*\\[\\s*, .replaceFirst\\s*\\]\\s*\\\\s*, } .map{case id,name,part=>rewardsid,name,part.split\\s*,\\s*匹配{ 案例Arrayid,代码,县=>Arrayxyzid,代码,县 }}
那个样的数据毫无意义,它应该是什么格式?为什么您的文件有一个容器包装器数组?我在mongo集合中有如下数据,我需要更改数组中的字段名,并将它们映射到不同的名称{Id:251,name:Jhon,partition:[{Id:STD,code:Health,country:Duval}]为什么您试图将Mongo数据库读取为文本文件,而不是通过数据库驱动程序连接?我不是将其读取为文本文件。我们正在将MongoCollection加载到DataFrame中,并将数据存储在HDFS中,而我们将数据存储为HDFS格式。我们希望读取数据并转换为不同的方式。