制作和操作numpy数组并使用pyspark数据

时间:2018-05-14 22:16:54

标签: numpy pyspark

我在pyspark.mllib.stat.KernelDensity中使用手工制作的测试数据遇到了问题。 numpy.float和Python的通用float之间存在某种问题/差异,这些问题/差异在使用(部分)pyspark时出现;特别是用numpy.float的中断构建的RDD。

有没有办法可以创建NumPy数组,使得它们的元素是python浮点数而不是numpy.float的?

import pyspark
import pyspark.mllib.stat
import numpy
sc = pyspark.SparkContext("local", 'test2')
rdd1 = sc.parallelize([1.0, 2.0, 3.0])
rdd2 = sc.parallelize(numpy.arange(1.0, 4.0, 1.0))
(kd1, kd2) = pyspark.mllib.stat.KernelDensity(), pyspark.mllib.stat.KernelDensity()
kd1.setBandwidth(0.2)
kd1.setSample(rdd1)
kd2.setBandwidth(0.2)
kd2.setSample(rdd2)
x = numpy.arange(0, 5.0, 0.1)
y1 = kd1.estimate(x)
y2 = kd2.estimate(x)

^ kd2.estimate失败

# can manually convert to "python float"
rdd2 = sc.parallelize([float(x) for x in numpy.arange(1.0, 4.0, 1.0)])
kd2.setSample(rdd2)
y2 = kd2.estimate(x)

1 个答案:

答案 0 :(得分:0)

尝试更换:

rdd2 = sc.parallelize(numpy.arange(1.0, 4.0, 1.0))

rdd2 = sc.parallelize(numpy.arange(1.0, 4.0, 1.0).tolist())

在第一个代码块中。