Spark Scala处理结构列数据帧数组

时间:2019-12-27 23:38:35

标签: scala apache-spark

|-- Ta: array (nullable = true)
|    |-- element: struct (containsNull = true)
|    |    |-- id: string (nullable = true)
|    |    |-- Tb: array (nullable = true)
|    |    |    |-- element: struct (containsNull = true)
|    |    |    |    |-- x: string (nullable = true)
|    |    |    |    |-- y: string (nullable = true)
|    |    |    |    |-- z: string (nullable = true)
|    |    |    |    |-- m: long (nullable = true)

我有此列数据框吗?  我如何计算数组结构的元素 以及如何将所有数组转换为字符串?

谢谢

1 个答案:

答案 0 :(得分:0)

此数据结构在数组内具有数组,因此在列对象上使用标准数组功能甚至无法用于第二级数组。我要做的方法是将其转换为数据集,将数据读入case类并处理Scala中的Array()。

    case class myclass(
     id:String,
     tb : Array[Tb]
    )

    case class Tb (x:String,y:String,z:String,m:Long)

    val ds = spark.read.parquet("path to file").as[myclass]

    ds.map{ row: Array[myclass] =>
    //access row array and all elements within it.
    }