J'essaie de décomposer la structure d'une structure de données complexe en étincelle. Je suis seulement intéressé par les tableaux imbriqués sous la racine. Le problème est que je ne peux pas récupérer le ElementType à partir du type de StructField.Comment extraire le ElementType d'un tableau en tant qu'instance de StructType
Voici un exemple, ce schéma d'un objet StructType:
df.printSchema
result>>
root
|-- ID: string (nullable = true)
|-- creationDate: string (nullable = true)
|-- personsList: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- firstName: string (nullable = true)
| | |-- lastName: string (nullable = true)
Chaque StructType est un tableau de
FieldType (name, type, nullable , metadata).
J'ai essayé le code ci-dessous:
val personsList = df.schema("personsList") // personsList is a StructField
println(passengersList.dataType)
I aimerait récupérer le ElementType pour avoir le StructType du tableau imbriqué, mais malheureusement nous avons seulement TypeName ou méthode json.
Meilleures salutations,
Merci, j'ai une question: Je ne suis intéressé que par le schéma, je me demande si la déclaration "select" récupère aussi les enregistrements même si nous ne montrons pas ou n'utilisons pas leur. (Je suis censé avoir des millions de disques et je ne les utiliserai pas) qu'en penses-tu? –
Oui, l'instruction 'select' générera une nouvelle trame de données pour les colonnes sélectionnées. Mais si vous n'utilisez pas la structure de données sélectionnée, elle doit être récupérée lors de l'expiration de la portée. Vous n'avez donc pas besoin de vous inquiéter d'avoir des millions d'enregistrements. –
Merci pour votre temps –