Nous lisons les données de MongoDB Collection
. La colonne Collection
a deux valeurs différentes (par exemple: (bson.Int64,int) (int,float)
).
J'essaie d'obtenir un type de données en utilisant pyspark.
Mon problème est que certaines colonnes ont un type de données différent.
Supposons que quantity
et weight
sont les colonnes
quantity weight
--------- --------
12300 656
123566000000 789.6767
1238 56.22
345 23
345566677777789 21
En réalité, nous n'avons défini le type de données d'aucune colonne de la collection mongo.
Quand je demande au compte de pyspark dataframe
dataframe.count()
J'ai une exception comme ça
"Cannot cast STRING into a DoubleType (value: BsonString{value='200.0'})"
Votre question est large, ma réponse sera donc large aussi.
Pour obtenir les types de données de vos colonnes DataFrame
, vous pouvez utiliser dtypes
i.e:
>>> df.dtypes
[('age', 'int'), ('name', 'string')]
Cela signifie que votre colonne age
est de type int
et name
est de type string
.
Je ne sais pas comment vous lisez sur mongodb, mais si vous utilisez le connecteur mongodb, les types de données seront automatiquement convertis en types spark. Pour obtenir le spark sql types, utilisez simplement l'attribut de schéma comme ceci:
df.schema
On dirait que vos données réelles et vos métadonnées ont différents types. Les données réelles sont de type chaîne tandis que les métadonnées sont doubles.
Comme solution, je vous recommanderais de recréer la table avec les types de données appropriés.