使用spark1.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在第一个命令下是空的。但是我怎样才能检查它是否是空的呢?在
Spark使用一个名为lazy evaluation的概念进行操作。所以当你运行第一行时,系统实际上并没有运行lambda函数,它只是将它存储在一个spark对象中。当您调用
count()
函数时,spark在过滤器中运行lambda函数。这就是错误发生的地方。换句话说,你的错误是告诉你至少有一个输入行没有16个逗号。在相关问题 更多 >
编程相关推荐