У меня есть следующий код Scala Spark для анализа txt-файла фиксированной ширины:
val schemaDf = df.select(
df("value").substr(0, 6).cast("integer").alias("id"),
df("value").substr(7, 6).alias("date"),
df("value").substr(13, 29).alias("string")
)
Я хотел бы извлечь следующий код:
df("value").substr(0, 6).cast("integer").alias("id"),
df("value").substr(7, 6).alias("date"),
df("value").substr(13, 29).alias("string")
вдинамический цикл, чтобы иметь возможность определить синтаксический анализ столбца в некоторой внешней конфигурации, что-то вроде этого (где x
будет содержать конфигурацию для каждого синтаксического анализа столбца, но пока это простые числа для демонстрационной цели):
val x = List(1, 2, 3)
val df1 = df.select(
x.foreach {
df("value").substr(0, 6).cast("integer").alias("id")
}
)
но сейчас следующая строка df("value").substr(0, 6).cast("integer").alias("id")
не компилируется со следующей ошибкой:
type mismatch; found : org.apache.spark.sql.Column required: Int ⇒ ?
Что я делаю не так и как правильно вернуть динамический список столбцов внутри df.select
метод?