pyspark ValueError:无法将字符串转换为float

时间:2015-12-07 21:48:18

标签: python pyspark rdd

我正在使用2个相当大的rdds:纬度列表lat和经度列表long。我正在尝试使用latlong = lat.zip(long)将它们混合在一起,但是当我尝试查看它时,我得到了ValueError:

 File "<stdin>", line 1, in <lambda>
ValueError: could not convert string to float: 
    at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:166)
    at org.apache.spark.api.python.PythonRunner$$anon$1.next(PythonRDD.scala:129)
    at org.apache.spark.api.python.PythonRunner$$anon$1.next(PythonRDD.scala:125)
    at org.apache.spark.InterruptibleIterator.next(InterruptibleIterator.scala:43)
    at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at org.apache.spark.api.python.PythonRDD$.writeIteratorToStream(PythonRDD.scala:452)
    at org.apache.spark.api.python.PythonRunner$WriterThread$$anonfun$run$3.apply(PythonRDD.scala:280)
    at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1699)
    at org.apache.spark.api.python.PythonRunner$WriterThread.run(PythonRDD.scala:239)

最后我尝试了其他简单的命令,比如lat.count()返回相同的错误。

这是什么意思?我没有把任何字符串转换成花车?

编辑:获取Lat long rdds: 我有一个具有拾取纬度和经度的出租车数据集,以及一个ZipCode数据集。我有一个方程式,我正试图找到最近的邮政编码。

pickuplat = taxirdd.map(lambda p: float(p[2])) #taxi pickup lat
zclat = zc.map(lambda p: (p[3]) ) #zip code center lat
alllat = pickuplat.cartesian(zclat) #compare taxi_lat with each zip_lat
lat = alllat.map(lambda x: x[0], x[1], x[0] - x[1]) #lat is actually the DIFFERENCE between 2 latitudes, my bad!!

pickuplong = taxirdd.map(lambda p: float(p[3]) ) #same with long
zclong = zc.map(lambda p: (p[4]) )
alllong = pickuplong.cartesian(zclong)
long = alllong.map(lambda x: x[0], x[1], x[0] - x[1]) #get pickuplong, zclong, and the diff.

现在我想把lat和lat拉在一起,因为我需要在下一个等式中同时使用它们,而且我不能在函数中使用2个RDD。

*经过一些测试之后,我可以在将值转换为浮点数之前在taxirdd上使用所有这些函数,但是然后尝试pickuplat.count()会产生ValueError。我尝试将结果转换回unicode,就像它在原始的taxirdd中再次尝试一样,但我仍然得到同样的错误。

0 个答案:

没有答案