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

Мы используем инструмент 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"
)

}

...