首页 > 解决方案 > 包含结构数组的结构字段的 Spark 模式

问题描述

我必须通过读取员工表模式将数据放到 HDFS 上。

create external table employee(
emp_id string,
emp_details struct<fname:string,lname:string,other_details:array<struct<other_details_code:string>>>
)

为上表创建架构时出现编译错误。

val empSchema = StructType(StructField("emp_id", StringType) ::
StructField("emp_details", StructType(Array(StructField("fname", StringType),StructField("lname", StringType), ArrayType(StructType(Array(StructField(other_details_code, StringType))))
)) ::
Nil)

标签: scalaapache-sparkapache-spark-sql

解决方案


尝试这个:

val empSchema = StructType(
    StructField("emp_id", StringType) ::
    StructField("emp_details", 
        StructType(Array(
            StructField("fname", StringType),
            StructField("lname", StringType), 
            StructField("other_details", ArrayType(StructType(Array(StructField("other_details_code", StringType)))))
        ))
    ) ::
Nil)

请注意,结构数组应包含在StructField other_details.


推荐阅读