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