искровая подстрока для файла с фиксированной шириной - PullRequest
0 голосов
/ 01 октября 2018

Я читаю текстовый файл фиксированной ширины как spark.read.text(//hdfs/abc.txt)

Мне нужно извлечь 100 столбцов из текстового файла и для которых я знаю смещения - начальную и конечную позицию.Для нескольких столбцов мне нужно привести в целое или десятичное число, добавить несколько столбцов и поместить псевдоним.

как в SQL, select substr(value,1,10) as col1, substr(value,20,24) as col2, (col1+col2) as col3

Может кто-нибудь сказать, пожалуйста, как мне этого добитьсяиспользование искрового фрейма данных.

Также с учетом производительности, пожалуйста, дайте некоторые входные данные для разбиения.

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете определить класс case для представления вашей схемы, а затем заполнить его, используя map для возврата набора данных [MySchema]

case class MySchema(colA: Int, colb: String, etc...)

spark.read.text(//hdfs/abc.txt).map{
  r =>
    val row = r.getString(0)

    // Parse values
    val a = // parseColA(row)
    val b = // parseColB(row)
    ...

    MySchema(colA, colB, etc...)
}
...