Pyspark - 错误:.count()上的“索引超出范围”

时间:2016-02-10 17:33:43

标签: python apache-spark pyspark

使用Spark 1.5,当我调用.count(),. top(),. take(x)

时,我继续使索引超出范围
lateWest = westBound.filter(lambda line: line.split(',')[16] > 0)
print(type(lateWest))<class 'pyspark.rdd.PipelinedRDD'>
lateWest.count()

lateWest.first()

lateWest.take(3)

为什么我收到此错误的任何想法。我猜是因为第一个命令导致lateWest为空。但是如何检查它是否为空?

1 个答案:

答案 0 :(得分:1)

Spark使用名为lazy evaluation的概念进行操作。因此,当您运行第一行时,系统实际上并没有运行您的lambda函数,它只是将它存储在spark对象中。当您调用count()函数时,spark会在您的过滤器中运行lambda函数。那就是错误实际发生的地方。换句话说,您的错误告诉您至少有一个输入行没有16个逗号。