scala,实现case class类的时候 业务字段过多导致的异常。不能超过22个字段

在Scala 2.10.x版本中,case class限制最多22个字段,当业务需求超过此限制时会导致编译错误。为解决这个问题,可以采取两种方式:一是自定义类并实现Product特质;二是升级到Scala 2.11及以上版本,该版本已取消此限制。项目中因日志处理需要105个字段,通过case class构建DataFrame时遇到问题,采用上述方法成功解决。
摘要由CSDN通过智能技术生成

一、背景

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, 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值