我有一个名为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环境吗?