PySpark:类型错误:StructType不能在类型接受对象0.10000000000000001 <类型 'numpy.float64'>

问题描述:

使用PySpark用下面的代码时:PySpark:类型错误:StructType不能在类型接受对象0.10000000000000001 <类型 'numpy.float64'>

from pyspark.sql.types import * 
samples = np.array([0.1,0.2]) 
dfSchema = StructType([StructField("x", FloatType(), True)]) 
spark.createDataFrame(samples,dfSchema) 

我得到:

TypeError: StructType can not accept object 0.10000000000000001 in type type 'numpy.float64'>

任何想法?

NumPy类型(包括numpy.float64)不是Spark SQL类型的有效外部表示。此外,您使用的架构不能反映数据的形状。

必须使用标准Python类型,并相应DataType直接:

spark.createDataFrame(samples.tolist(), FloatType()).toDF("x")