Как программно сгенерировать тип структуры как StringType для всех полей в искре? - PullRequest
0 голосов
/ 15 октября 2019

У меня есть * n количество полей (например, 200-300), все поля Тип структуры я хочу только как строковый тип. Есть любой простой способ, как указано ниже

val schema = StructType(schemaString.split(" ").map(fieldName ⇒ StructField(fieldName, StringType, true)))

Ниже кода, который я пробовал,

StructType schema= new StructType()
        .add("field1", StringType)
        .add("field2", StringType)
        .add("field3", StringType);

ExpressionEncoder express=RowCoder.apply(schema)

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете использовать шаблон соответствия

import org.apache.spark.sql.types._

val df = Seq(
  (1L, BigDecimal(12.34), "a", BigDecimal(10.001)),
  (2L, BigDecimal(56.78), "b", BigDecimal(20.002))
).toDF("c1", "c2", "c3", "c4")

val newSchema = df.schema.fields.map{
  case StructField(name, _: DecimalType, nullable, _)
    => StructField(name, DoubleType, nullable)
  case field => field
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...