数组的StructType

时间:2019-02-11 21:18:11

标签: scala apache-spark apache-spark-sql

我需要做什么?

public string TimeAsText { get { return Hours.ToString().PadLeft(2, '0') + ":" + ((int)(Math.Round(Minutes / 5.0)*5)).ToString().PadLeft(2, '0'); } } 创建架构,如下所示:

DataFrame

前缀为root |-- doubleColumn: double (nullable = false) |-- longColumn: long (nullable = false) |-- col0: double (nullable = true) |-- col1: double (nullable = true) ... 的列的数量可以不同。它们的名称存储在数组col中。

我的尝试

ar: Array[String]

注释行(4)出现问题,我不知道如何传递此数组。

1 个答案:

答案 0 :(得分:2)

没有必要减少任何东西。您可以只附加一个已知列的列表:val

val schema = StructType(Seq(
    StructField("doubleColumn", DoubleType, false),
    StructField("longColumn", LongType, false)
  ) ++ ar.map(item => StructField(item, DoubleType, true))
)

您也可以

ar.foldLeft(StructType(Seq(
  StructField("doubleColumn", DoubleType, false), 
  StructField("longColumn", LongType, false)
)))((acc, name) => acc.add(name, DoubleType, true))