web-dev-qa-db-ja.com

pysparkを使用して列のデータ型を取得します

MongoDB Collectionからデータを読み込んでいます。 Collection列には2つの異なる値があります(例:(bson.Int64,int) (int,float))。

Pysparkを使用してデータ型を取得しようとしています。

私の問題は、一部の列のデータ型が異なることです。

quantityweightが列であると仮定します

quantity           weight
---------          --------
12300              656
123566000000       789.6767
1238               56.22
345                23
345566677777789    21

実際、mongoコレクションのどの列にもデータ型を定義していません。

pyspark dataframeからカウントを照会すると

dataframe.count()

このような例外が発生しました

"Cannot cast STRING into a DoubleType (value: BsonString{value='200.0'})"
21
Sreenuvasulu

あなたの質問は広範なので、私の答えも広範になります。

DataFrame列のデータ型を取得するには、dtypesを使用できます。

>>> df.dtypes
[('age', 'int'), ('name', 'string')]

これは、列ageint型であり、namestring型であることを意味します。

44
eliasah

Mongodbからどのように読み取るのかわかりませんが、mongodbコネクタを使用している場合、データ型はspark型に自動的に変換されます。 spark SQLタイプを取得するには、次のようなスキーマ属性を使用します。

df.schema
4
Luis A.G.

実際のデータとメタデータには異なるタイプがあるようです。実際のデータは文字列型で、メタデータは二重です。

解決策として、正しいデータ型でテーブルを再作成することをお勧めします。

1