Spark Scala считывает пользовательский формат файла в фрейм данных со схемой - PullRequest
0 голосов
/ 28 июня 2018

У меня есть входной файл, который очень похож на CSV, но с пользовательским заголовком:

FIELDS-START
field1
field2
field3
FIELDS-END-DATA-START
val1,2,3
val2,4,5
DATA-END

Задача: Для считывания данных в типизированный фрейм данных схема получается динамически, пример для этого конкретного файла:

val schema = StructType(
  StructField("field1", StringType, true) ::
    StructField("field2", IntegerType, true) ::
    StructField("field3", IntegerType, true) :: Nil
)    

Так что из-за пользовательского заголовка я не могу использовать spark csv reader. Другая вещь, которую я пробовал:

val file = spark.sparkContext.textFile(...)
val data: RDD[List[String]] = file.filter(_.contains(",")).map(_.split(',').toList)

val df: DataFrame = spark.sqlContext.createDataFrame(data.map(Row.fromSeq(_)), schema)

Сбой с исключением времени выполнения

java.lang.String не является допустимым внешним типом для схемы типа int , поскольку createDataFrame не выполняет приведение типов.

ПРИМЕЧАНИЕ. Схема получается во время выполнения

Заранее спасибо!

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