Сбой класса scala, созданного с помощью Avrohugger, когда первичные конструкторы, предоставленные классу case, содержат более 254 столбцов

Мы используем инструмент Avrohugger для создания файла класса scala из схемы Avro. Но файлы классов scala завершаются с ошибкой во время компиляции с "Превышен лимит параметров JVM Spec Violation 255".

Я пробовал несколько вариантов, чтобы исправить это, но до сих пор нет решения.

Один из подходов заключается в добавлении оставшихся первичных конструкторов (256 (общее количество столбцов) - 254(допустимые столбцы)) в качестве полей внутри класса case. Когда я пытаюсь получить доступ к полям внутри класса дела, я получаю еще одну ошибку как "неизвестное имя параметра XXX enter code here" (XXX - это поле, определенное внутри класса case) "256 аргументов, но ожидаемые 254 аргумента " (это потому, что я поместил 254 параметра в качестве основных конструкторов и 2 дополнительных параметра в качестве значений внутри класса case).

Как я могу закончить эту проблему, используя Avrohugger.

Я создал файлы схемы scala и отредактировал файл scala, но он не работает при извлечении дополнительных столбцов, которые определены внутри тела класса case.

измененные файлы выглядят так:

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

   }

Эта схема используется в коде как:

object Job extends App {

Apple(
 col1 = "1",
 col2 - None,
 ..
col254 = "Hello"
col255 = "Something"
col257 = "Something Else"
)

}

0 ответов

Другие вопросы по тегам