1. ホーム
  2. python

Spark DataFrameを作成します。型のスキーマを推論できません。<type 'float'> のスキーマを推測できません。

2023-09-30 13:15:45

質問

Spark DataFrameで発生したこの問題を解決するために、どなたか助けていただけないでしょうか?

私がするとき myFloatRDD.toDF() というエラーが出ます。

TypeError: Can not infer schema for type: type 'float'.

なぜなんでしょう...

myFloatRdd = sc.parallelize([1.0,2.0,3.0])
df = myFloatRdd.toDF()

ありがとうございます。

どのように解決するのですか?

SparkSession.createDataFrame は、ボンネットの下で使用されるため、そのためには RDD / listRow / tuple / list / dict * または pandas.DataFrame を持つスキーマでない限り DataType が提供されていなければならない。このようにfloatをtupleに変換してみましょう。

myFloatRdd.map(lambda x: (x, )).toDF()

あるいはさらに

from pyspark.sql import Row

row = Row("val") # Or some other column name
myFloatRdd.map(row).toDF()

を作成するために DataFrame を作るには、スカラーのリストから SparkSession.createDataFrame を直接使い、スキーマを提供しなければならない。

from pyspark.sql.types import FloatType

df = spark.createDataFrame([1.0, 2.0, 3.0], FloatType())

df.show()

## +-----+
## |value|
## +-----+
## |  1.0|
## |  2.0|
## |  3.0|
## +-----+

を使いますが,単純な範囲であれば SparkSession.range :

from pyspark.sql.functions import col

spark.range(1, 4).select(col("id").cast("double"))


* サポートは終了しています。

** Spark SQL は、Python オブジェクトのスキーマ推論を限定的にサポートします。 __dict__ .

*** Spark 2.0以降でのみサポートされています。