Scala получает исключение Java при попытке создать RDD с более чем 255 столбцами - PullRequest
0 голосов
/ 01 июня 2018

У меня огромный набор данных с почти 600 столбцами, но, хотя я пытаюсь создать DF, происходит сбой с

Exception in thread "main" java.lang.ClassFormatError: Too many arguments in method signature in class file

Пример кода:

def main(args: Array[String]): Unit = {
  val data = sc.textFile(file);
  val rd = data.map(line => line.split(",")).map(row => new Parent(row(0), row(1), ........row(600)))
  rd.toDF.write.mode("append").format("orc").insertInto("Table")
}

Может кто-тоПомогите, как решить эту проблему?

1 Ответ

0 голосов
/ 01 июня 2018

Я полагаю, что существует ограничение на максимальное количество аргументов метода для объекта Java, которое поэтому распространяется и на объект Scala.Класс Person с 600 параметрами был бы невозможен.

Наиболее идеальным решением было бы считывать исходный файл csv следующим образом:

spark.read.csv(filePath)

Кроме того, вы можете увеличить параметр maxColumns, используяподпись.

spark.read.options().csv() 

Хотя это напрямую не влияет на ваш сценарий использования, для max-столбцов установлено значение 20480. Более подробную информацию об этих параметрах можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...