Apache spark 如何按语法为spark中的所有字段生成StringType作为StringType?

Apache spark 如何按语法为spark中的所有字段生成StringType作为StringType?,apache-spark,spark-structured-streaming,Apache Spark,Spark Structured Streaming,我有*n个字段(比如200-300),所有字段的结构类型都是我想要的字符串类型。有没有简单的方法,如下面提到的 val schema=StructType(schemaString.split(“”).map(fieldName⇒ StructField(fieldName,StringType,true))) 下面是我试过的代码 StructType架构=新的StructType() .add(“字段1”,字符串类型) .add(“字段2”,字符串类型) .添加(“字段3”,StringTyp

我有*n个字段(比如200-300),所有字段的结构类型都是我想要的字符串类型。有没有简单的方法,如下面提到的

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

下面是我试过的代码

StructType架构=新的StructType()
.add(“字段1”,字符串类型)
.add(“字段2”,字符串类型)
.添加(“字段3”,StringType);
ExpressionEncoder express=RowCoder.apply(架构)

您可以使用模式匹配

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
}

无论你提到什么,都是一个很好的解决办法。这应该是简单而正确的答案。Schematring看起来如何?@AlexandrosBiratsis Schematring in row format无论我在Scala中提到什么,它都非常简单,我需要将代码转换成java