Проблема в том, что результатом dframe(field).cast(sql.types.IntegerType)
в foldLeft
является столбец, однако для продолжения итерации ожидается датафрейм.В ссылке, где код изначально взят из dframe.drop(field)
, используется тот, который возвращает фрейм данных и, следовательно, работает.
Чтобы это исправить, просто используйте withColumn
, который настроит конкретный столбец, а затем вернет весь фрейм данных:
foldLeft(raw_data)({case(dframe, field) => dframe.withColumn(field, dframe(field).cast(sql.types.IntegerType))})