Apache spark 为什么在ApacheSpark中有几个数据集有一个结构数组

Apache spark 为什么在ApacheSpark中有几个数据集有一个结构数组,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我看到一些数据集在元素内部有一个结构数组,而不是字符串或整数数组 |-- name: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- value: string (nullable = true) 我想知道为什么,因为我最终想要的是能够表示一个字符串数组,那么为什么在这两者之间有一个结构。您可以使用ArrayType和StructField来保存字符串数组。您不需要在

我看到一些数据集在元素内部有一个结构数组,而不是字符串或整数数组

 |-- name: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- value: string (nullable = true)

我想知道为什么,因为我最终想要的是能够表示一个字符串数组,那么为什么在这两者之间有一个结构。

您可以使用ArrayType和StructField来保存字符串数组。您不需要在StructField中使用StructType。在本例中,column2可以容纳字符串数组。请参见第2列的架构。然而,整行的架构将是StructType

您需要一个StructType来保存由许多数据类型组成的复杂类型。这就像把一张桌子放在一列中。请参见第2列的架构

StructType( 
Array(
StructField("column1", LongType, nullable = true),
StructField("column2", ArrayType(StructType(Array(
      StructField("column3", StringType, nullable = true),
      StructField("column4", StringType, nullable = true))),
 true)
)
)

结构以后可以添加更多字段。数组只是一种类型。结构为何存在取决于您的dataset@CodeJunkie我的答案对你有用吗?这取决于你想如何处理模式,尽管如果你确定你可以将结构转换成字符串,那应该很容易。请先提供一些示例数据以及所需的输出不需要使用StructType,然后您说您需要它?我的意思是StructField中的StructType不需要用于存储字符串数组。我正在修改课文。谢谢你的评论。
StructType( 
Array(
StructField("column1", LongType, nullable = true),
StructField("column2", ArrayType(StructType(Array(
      StructField("column3", StringType, nullable = true),
      StructField("column4", StringType, nullable = true))),
 true)
)
)