У меня есть только элементарные знания о сопоставлении типов данных R (в частности, возвращаемых функцией class()
) с типами данных Spark. Тем не менее, следующая функция работает, как я ожидаю. Надеюсь, другие найдут его полезным / улучшит его:
get_spark_data_types_from_data_frame_types <- function(df) {
r_types <-
c("logical", "numeric", "integer", "character", "list", "factor")
spark_types <-
c("boolean", "double", "integer", "string", "array", "string")
types_in <- sapply(df, class)
types_out <- spark_types[match(types_in, r_types)]
types_out[is.na(types_out)] <- "string" # initialise to character by default
names(types_out) <- names(df)
return(types_out)
}