web-dev-qa-db-fra.com

récupère le type de données de la colonne en utilisant pyspark

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'})"
21
Sreenuvasulu

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.

44
eliasah

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
4
Luis A.G.

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.

1