当提供给case类的主构造函数超过254列时,使用Avrohugger生成的scala类失败

时间:2019-02-01 00:43:06

标签: java scala avro case-class avrohugger

我们正在使用Avrohugger工具从Avro模式生成scala类文件。但是在编译过程中,scala类文件失败,并且出现“ JVM Spec Violation 255 Parameter Limit Exceeded”。

我尝试了多种方法来修复此问题,但仍然没有解决方案。

一种方法是将其余的主要构造函数(256(总列数)-254(允许的列数))添加为case类内的字段。当我尝试访问案例类中的字段时,出现另一个错误,因为  “未知参数名称XXX contains()”(XXX是在案例类内部定义的字段)  “ 256个参数,但预期为254个参数”  (这是因为我将254个参数作为主要构造函数,并将2个其他参数作为值放置在case类中)。

如何使用Avrohugger解决此问题。

我已经创建了scala Schema文件并编辑了scala文件,但是在检索case类主体中定义的其他列时失败。

修改后的文件如下:

enter code here

此架构在代码中的使用方式为:

case class Apple(col1, col2, .... col254) extends 
org.apache.avro.specificRecordBase with ParsedData{

var col255 = None: Option[String]
var col256 = None: Option[String]

def this() = this(None, .......None) // count is 254

def get ( ) ....   // i have included all the 256 col
def put () ....     // i have included all the 256 col

def getSchema(): org.apache.avro.Schema =  A.schema

}

object Apple{

val SCHEMA = new org.apache.avro.Schema.Parse( <schema definition>) // all 
the 256 columns

   }

}

0 个答案:

没有答案