python - PySpark:TypeError:StructType 无法接受类型 <type 'numpy.float64' > 中的对象 0.10000000000000001

标签 python numpy apache-spark pyspark apache-spark-sql

通过以下代码使用 PySpark 时:

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 类型的有效外部表示。此外,您使用的架构并不反射(reflect)数据的形状。

您应该使用标准的 Python 类型,并直接使用相应的 DataType:

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

关于python - PySpark:TypeError:StructType 无法接受类型 <type 'numpy.float64' > 中的对象 0.10000000000000001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45099284/

相关文章:

python - 如何使用scapy分析sip/rtp数据包?

python - 将 C bitfiddling 移植到 Python 的惯用方法

python - Python 脚本中的多线程

python - 3d 数组的乘法和切片

python - 为椭圆体内的 3D 数组中的点赋值

scala - 使用 Spark Scala 将数据插入到带有 HiveContext 的 Hive 表中

scala - 将映射键分解为列名

python - 在 Pandas 中,当使用 read_csv() 时,如何将 NaN 分配给不是预期 dtype 的值?

apache-spark - 如何读取 Spark 工作节点中的文件?

python - 将函数应用于 NumPy 矩阵中的所有元素