Apache spark 在Pyspark中将数据帧的行划分为简单行

Apache spark 在Pyspark中将数据帧的行划分为简单行,apache-spark,pyspark,apache-spark-sql,spark-dataframe,Apache Spark,Pyspark,Apache Spark Sql,Spark Dataframe,我有这个模式,我想将结果的内部拆分为列,以便有col1:EventCode、col2:Message等。。。我正在使用Pyspark,我尝试了explode函数,但它似乎对structType不起作用,有没有办法在Spark中实现这一点 root |-- result: struct (nullable = true) | |-- EventCode: string (nullable = true) | |-- Message: string (nullable = true

我有这个模式,我想将结果的内部拆分为列,以便有col1:EventCode、col2:Message等。。。我正在使用Pyspark,我尝试了explode函数,但它似乎对structType不起作用,有没有办法在Spark中实现这一点

root
 |-- result: struct (nullable = true)
 |    |-- EventCode: string (nullable = true)
 |    |-- Message: string (nullable = true)
 |    |-- _bkt: string (nullable = true)
 |    |-- _cd: string (nullable = true)
 |    |-- _indextime: string (nullable = true)
 |    |-- _pre_msg: string (nullable = true)
 |    |-- _raw: string (nullable = true)
 |    |-- _serial: string (nullable = true)
 |    |-- _si: array (nullable = true)
 |    |    |-- element: string (containsNull = true)
 |    |-- _sourcetype: string (nullable = true)
 |    |-- _time: string (nullable = true)
 |    |-- host: string (nullable = true)
 |    |-- index: string (nullable = true)
 |    |-- linecount: string (nullable = true)
 |    |-- source: string (nullable = true)
 |    |-- sourcetype: string (nullable = true)

将dataframe的行划分为简单的行很容易。您所要做的就是从dataframe中选择所有列并将其分配给另一个dataframe。大概是这样的:

simpleDF = df.select("result.*")
它将上述给定模式转换为以下模式:

simpleDF.printSchema

root
 |-- EventCode: string (nullable = true)
 |-- Message: string (nullable = true)
 |-- _bkt: string (nullable = true)
 |-- _cd: string (nullable = true)
 |-- _indextime: string (nullable = true)
 |-- _pre_msg: string (nullable = true)
 |-- _raw: string (nullable = true)
 |-- _serial: string (nullable = true)
 |-- _si: array (nullable = true)
 |    |-- element: string (containsNull = true)
 |-- _sourcetype: string (nullable = true)
 |-- _time: string (nullable = true)
 |-- host: string (nullable = true)
 |-- index: string (nullable = true)
 |-- linecount: string (nullable = true)
 |-- source: string (nullable = true)
 |-- sourcetype: string (nullable = true)