誰かがSpark DataFrameでこの問題を解決するのを手伝ってもらえますか?
myFloatRDD.toDF()
を実行すると、エラーが発生します。
TypeError:タイプのスキーマを推測できません:タイプ 'float'
理由がわかりません...
例:
myFloatRdd = sc.parallelize([1.0,2.0,3.0])
df = myFloatRdd.toDF()
ありがとう
SparkSession.createDataFrame
は、内部で使用され、RDD
/list
のRow
/Tuple
/list
/が必要です。*またはdict
pandas.DataFrame
(DataType
のスキーマが提供されていない場合)。このようにフロートをタプルに変換してみてください:
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は、__dict__
を公開するPythonオブジェクトのスキーマ推論の限定的なサポートも提供します。
*** Spark 2.0以降でのみサポートされています。