Создана вложенная структурная схема SPARK - PullRequest
0 голосов
/ 01 марта 2019

Существующие столбцы DF:

|-- col1: string (nullable = true)
|-- col2: string (nullable = true)
|-- col3: struct (nullable = true)
|    |-- col3_1: struct (nullable = true)
|    |    |-- colA: string (nullable = true)
|    |-- col3_2: struct (nullable = true)
|    |    |-- colB: string (nullable = true)
|-- col4: string (nullable = true)
|-- col5: string (nullable = true)

Мне нужно прочитать только следующие столбцы:

col1,col2, col3,

Для первых 2 столбцов я могу создать следующую схему:

val schema = StructType(Array(StructField("col1", StringType), StructField("col2", LongType)))

Схема для вложенной структуры:

StructType(Array(StructField("col1", StringType), 
StructField("col3", StructType(StructField("col3_1",StructType(StructField("colA",StringType))),StructField("col3_2",StructType(StructField("colB",StringType)))))

Ошибка:

error: overloaded method value apply with alternatives:

Любые предложения по созданию схемы для вложенной структуры

1 Ответ

0 голосов
/ 01 марта 2019

Вы должны попробовать что-то вроде этого или объявить case class для col3 и заменить его в своей схеме:

val schema = StructType(Seq(  
    StructField("col1",IntegerType,false),
    StructField("col2",StringType,false),
    StructField("col3",StructType(Seq(  
                       StructField("col3_1",StructType(Seq(  
                       StructField("colA",StringType,false)
                         ))),
                       StructField("col3_2",StructType(Seq(  
                       StructField("colB",StringType,false)
                         )))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...