Мне нужно проверить типы данных DataFrame.
Образец DF
val rawData = Seq((1,"First Rec Col 1" , "First Rec Col 2" ), (1,"Second Rec Col 1" , "Second Rec Col 2")).toDF("Raw_PK" ,"Col1", "Col2")
rawData.show
Результат:
Вот моя схема,
val types = Seq(("Col1", "string"), ("Col2", "double"))
Там написано, что Col1 должно быть типа String
, а Col2 должно быть double
Что я пробовал?
Есть несколько способов, которые я попробовал (традиционный способ зацикливания), но хочу избавиться от этого. Итак, вот что я сделал
val df2 = rawData.select(types.map{case (c, t) => col(c).cast(t)} : _*)
df2.show
Он пытается разыграть Col2 String
до Double
, он показал null in Col2
Я хочу добиться, чтобы в него добавили ДРУГОЕ КОЛОННУ, сказав, что это недопустимая запись для обработки.
Любая помощь? Заранее спасибо.