PySpark RDD 过滤不等式问题

PySpark RDD filter trouble with inequality

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

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

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

header 个标题是:

accountNumber, personFname, personLname, balance

然后我删除了 header

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环境吗?