PySpark RDD过滤器存在不等式问题



我有一个名为bank_rdd的RDD,它是从CSV文件导入的。

首先,我将每一行用逗号分隔成一个列表

bank_rdd1 = bank_rdd.map(lambda line: line.split(','))

标题为:

accountNumber, personFname, personLname, balance

然后我删除了标题

header = bank_rdd1.first()
bank_rdd1 = bank_rdd1.filter(lambda row: row != header)

前两条记录的样本数据如下:

[('1','John','Smith','1100'),('2','Jane','Doe','500')]

当我运行下面的代码时,我得到了100的计数(这是我过滤之前的记录数量(

bank_rdd1.count()

当我运行以下代码时,我得到的计数为0。请注意,x[3]是指包含银行账户余额的列,它是一个字符串。

bank_rdd1 = bank_rdd1.filter(lambda x: int(x[3]) > 1000)
bank_rdd1.count()

当CSV文件中有20行的银行账户余额大于1000时,我不知道为什么它返回的计数为0。

有人能指出可能是什么错误吗?

下面的代码对我来说很好。

>>> data = spark.sparkContext.parallelize([('1','John','Smith','1100'),('2','Jane','Doe','500')])
>>> data.first()
('1', 'John', 'Smith', '1100')
>>> data.count()
2
>>> data.filter(lambda x: int(x[3]) > 1000).count()
1

你确定这是导致错误的原因吗?你能分享整个代码吗?你能谈谈你的pyspark环境吗?

最新更新