我们正在使用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
}
}