一、背景
1、在scala-2.10.x版本种,case class的元素超过22个以后即会编译报错
2、有些业务场景下,需要超过22个元素的值
我们项目当中日志一共有105个字段,在对原始日志进行处理转换成parquet文件的过程中,我们使用的方法是定义一个case class类,将这105个字段封装到这个对象里面,基于这种方式构建的DataFrame。结果运行的时候报错了,之后我们查阅官网,发现在scala 2.10版本中case class一共只支持22个字段,如果超过了就会报错,然后官网也给了我们解决方法,就是自定义一个类实现product特质,这样就能解决这个问题
二、如何解决
1、Scala提供了解决方案,即使用类实现Product特质
package com.ngaa.scala /**
* @author Created by yangjf on 20180712.
* Update date:
* Time: 15:43
* Project: dev-spark01-examples
* Package: com.ngaa.scala
* Describe : Scala构建超过22个元素的class
* API参考:
* https://www.scala-lang.org/api/current/scala/Product.html
* 学习参考:
* https://www.artima.com/pins1ed/
*
*/
object More22Elements { def main(args: Array[String]) { val student = new Student(1, 2, 3, 4,