Spark-如何在scala中的StructType开头添加StructField

Spark-如何在scala中的StructType开头添加StructField,scala,apache-spark,Scala,Apache Spark,我有一个StructType类型的架构: val schema = getSchema(); // getSchema returns StructType 我创建了另一个StructField类型的字段: StructField("NAME", StringType, false) 我知道我可以调用schema.add()方法将名称字段添加到现有模式的末尾,但是如何将名称添加到模式的开头,使其成为第一列?谢谢。您可以创建一个辅助的StructType,然后将现有的添加到其中: val a

我有一个StructType类型的架构:

val schema = getSchema();  // getSchema returns StructType
我创建了另一个StructField类型的字段:

StructField("NAME", StringType, false)

我知道我可以调用schema.add()方法将名称字段添加到现有模式的末尾,但是如何将名称添加到模式的开头,使其成为第一列?谢谢。

您可以创建一个辅助的
StructType
,然后将现有的添加到其中:

val auxSchema=StructType(Array(StructField("NAME", StringType, false)))
StructType(auxSchema++schema)
这会奏效的

 val schema = StructType(
      StructField("string_column", StringType, true) ::
        StructField("int_column", IntegerType, true) ::
        StructField("float_column", FloatType, true) ::
        StructField("_corrupt_record", StringType, true) :: Nil
    )

 val newschema = schema.add(StructField("new_column", StringType, true))
 println(newschema)

虽然这段代码可能会回答这个问题,但添加一些关于如何以及为什么解决这个问题的解释将提高您的答案的质量