Mon application spark lit un fichier csv, le transforme en un format différent avec sql et écrit la donnée de résultat dans un fichier csv différent.Spark traitant des valeurs nulles dans la colonne csv en tant que type de données nul
Par exemple, j'ai csv d'entrée comme suit:
Id|FirstName|LastName|LocationId
1|John|Doe|123
2|Alex|Doe|234
Ma transformation est:
Select Id,
FirstName,
LastName,
LocationId as PrimaryLocationId,
null as SecondaryLocationId
from Input
(je ne peux pas répondre à pourquoi le nul est utilisé comme SecondaryLocationId, il est entreprise cas d'utilisation) Maintenant spark ne peut pas comprendre le type de données de SecondaryLocationId et renvoie null dans le schéma et renvoie l'erreur La source de données CSV ne prend pas en charge le type de données nul lors de l'écriture dans la sortie csv. Ci-dessous sont printSchema() et les options d'écriture que j'utilise. Voici les options suivantes:
root
|-- Id: string (nullable = true)
|-- FirstName: string (nullable = true)
|-- LastName: string (nullable = true)
|-- PrimaryLocationId: string (nullable = false)
|-- SecondaryLocationId: null (nullable = true)
dataFrame.repartition(1).write
.mode(SaveMode.Overwrite)
.option("header", "true")
.option("delimiter", "|")
.option("nullValue", "")
.option("inferSchema", "true")
.csv(outputPath)
Existe-t-il un moyen de définir par défaut un type de données (tel qu'une chaîne de caractères)? Par ailleurs, je peux obtenir ce travail en remplaçant null avec une chaîne vide ('') mais ce n'est pas ce que je veux faire.
Ceci est uniquement lorsque je sais quelles colonnes seront traitées en tant que type de données nul.Quand un grand nombre de fichiers est lu et appliqué diverses transformations, alors je ne saurais pas ou existe-t-il un moyen de savoir quels champs sont traités nuls? – tturner