Мы используем инструмент Avrohugger для создания файла класса scala из схемы Avro.Но файлы классов scala завершаются с ошибкой во время компиляции с «Превышен лимит параметров JVM Spec Violation 255».
Я пробовал несколько вариантов, чтобы исправить это, но все еще не найдено решение.
Один из подходов - добавить оставшиеся первичные конструкторы (256 (общее количество столбцов) - 254 (допустимые столбцы)) какполя внутри класса дела.Когда я пытаюсь получить доступ к полям внутри класса дела, я получаю еще одну ошибку как «неизвестное имя параметра XXX enter code here
» (XXX - это поле, определенное внутри класса дела) «256 аргументов, но ожидается 254 аргумента» (это потому, что я поместил 254 параметра в качестве основных конструкторов и 2 дополнительных параметра в качестве значений внутри класса case).
Как я могу решить эту проблему с помощью Avrohugger.
Я создал файлы схемы scala и отредактировал файл scala, но он не работает при получении дополнительных столбцов, которые определены внутри телакласс дела.
измененные файлы выглядят так:
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"
)
}