MongoDB Collection
からデータを読み込んでいます。 Collection
列には2つの異なる値があります(例:(bson.Int64,int) (int,float)
)。
Pysparkを使用してデータ型を取得しようとしています。
私の問題は、一部の列のデータ型が異なることです。
quantity
とweight
が列であると仮定します
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'})"
あなたの質問は広範なので、私の答えも広範になります。
DataFrame
列のデータ型を取得するには、dtypes
を使用できます。
>>> df.dtypes
[('age', 'int'), ('name', 'string')]
これは、列age
がint
型であり、name
がstring
型であることを意味します。
Mongodbからどのように読み取るのかわかりませんが、mongodbコネクタを使用している場合、データ型はspark型に自動的に変換されます。 spark SQLタイプを取得するには、次のようなスキーマ属性を使用します。
df.schema
実際のデータとメタデータには異なるタイプがあるようです。実際のデータは文字列型で、メタデータは二重です。
解決策として、正しいデータ型でテーブルを再作成することをお勧めします。