Сбой класса 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"
)
}