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")