Scala 从schemaRDD重新映射列

Scala 从schemaRDD重新映射列,scala,apache-spark,Scala,Apache Spark,我正在从json文件中选择列,转换其中的一些列,并希望将结果存储为拼花文件,但我失败了 这就是我正在做的: val jsonFiles=sqlContext.jsonFile("/requests.loading") jsonFiles.registerTempTable("jRequests") val clean_jRequests=sqlContext.sql("select c1, c2, c3 ... c55 from jRequests") 然后我运行一个地图: val jReq

我正在从json文件中选择列,转换其中的一些列,并希望将结果存储为拼花文件,但我失败了

这就是我正在做的:

val jsonFiles=sqlContext.jsonFile("/requests.loading")
jsonFiles.registerTempTable("jRequests")

val clean_jRequests=sqlContext.sql("select c1, c2, c3 ... c55 from jRequests")
然后我运行一个地图:

val jRequests_flat=clean_jRequests.map(line=>{((line(1),line(2),line(3),line(4),line(5),line(6),line(7),line(8).asInstanceOf[Iterable[String]].mkString(","),line(9) ,line(10) ,line(11) ,line(12) ,line(13) ,line(14) ,line(15) ,line(16) ,line(17) ,line(18) ,line(19) ,line(20) ,line(21) ,line(22) ,line(23) ,line(24) ,line(25) ,line(26) ,line(27) ,line(28) ,line(29) ,line(30) ,line(31) ,line(32) ,line(33) ,line(34) ,line(35) ,line(36) ,line(37) ,line(38) ,line(39) ,line(40) ,line(41) ,line(42) ,line(43) ,line(44) ,line(45) ,line(46) ,line(47) ,line(48) ,line(49) ,line(50)))})
有没有更聪明的方法来实现只修改某一列而不与其他列关联,但保留所有列? 最后一条语句失败,因为元组成员太多: :19:错误:对象Tuple50不是包scala的成员 谢谢
丹尼尔

您需要全部55列吗

您可以创建一个case类,它只保存您需要的列并保存这个子集

当然,如果将来需要,可以保留包含所有数据的原始文件


您得到的是Tuple50错误,因为您在Scala中达到了22个Tuple的限制-请参见

谢谢,我确实需要所有的55。。也许有一个更好的方法来做这件事,而不是我正在尝试的。