PySpark:无法迭代“ NoneType”对象上的RDD元素过滤失败

我想filter删除RDD中字段“状态”不等于“确定”的元素。我从HDFS上的一组CSV文件中创建了RDD,然后map在尝试执行filter以下操作之前获取所需的结构

import csv, StringIO    

files = "/hdfs_path/*.csv"

fields = ["time", "status"]

dial = "excel"

default = {'status': 'OK', 'time': '2014-01-01  00:00:00'}

def loadRecord(line, fieldnames, dialect):
    input = StringIO.StringIO(line)
    reader = csv.DictReader(input, fieldnames = fieldnames, dialect = dialect)
    try:
        line = reader.next()
        if line is None:
            return default
        else:
            return line
    except:
        return default

harmonics = sc.textFile(files) \
              .map(lambda x: loadRecord(x, fields, dial)) \
              .filter(lambda x: "OK" not in x['status'])

我可以对该RDD执行其他操作-例如mapget仅对某些字段执行其他操作,等等。但是,当我使用时运行我的代码时filter,其中一个任务总是会失败,但filterlambda函数会出现异常

'NoneType object is not iterable'

我认为这意味着filterlambda正在接收None,因此我添加了代码loadRecord以避免返回None但是,我仍然遇到相同的错误。它确实适用于较小的样本数据集,但是我的实际数据足够大,我不确定如何检测其中的哪一部分可能引起问题。

任何输入表示赞赏!

0x0FFF

首先,map(lambda x: loadRecord(x, fields, dial))使用map(lambda x: (x, loadRecord(x, fields, dial)))-保存原始记录和已解析的记录。

其次,将filter()call替换flatMap(test_function)并定义test_function测试输入的方式,如果第二个传递的参数为None(已解析的记录),它将返回第一个参数。

这样,您将获得导致问题的输入行,并在本地对其进行测试。通常,我会添加一行global default作为loadRecord函数的第一行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在pyspark中的可迭代RDD上使用过滤器

来自分类Dev

pyspark:“ PipelinedRDD”对象不可迭代

来自分类Dev

无法解决“NoneType”对象不可迭代的TypeError

来自分类Dev

pyspark: TypeError: 'float' 对象不可迭代

来自分类Dev

pyspark - TypeError:“价格”对象不可迭代

来自分类Dev

PySpark RDD过滤掉的元素又回来了

来自分类Dev

Python 模拟对象迭代器无法多次迭代

来自分类Dev

“ NoneType”对象不可迭代

来自分类Dev

“ NoneType”对象不可迭代

来自分类Dev

NoneType 对象不可迭代

来自分类Dev

无法在pyspark上运行查询

来自分类Dev

pyspark groupByKey 的可迭代对象(ResultIterable)有什么好处呢?

来自分类Dev

C ++中对集合元素的迭代无法编译

来自分类Dev

无法使用硒单击迭代元素

来自分类Dev

Django无法在模板上迭代prefetch_related对象

来自分类Dev

我无法在角度键的基础上迭代嵌套对象

来自分类Dev

无法迭代SimpleXMLElement对象并插入数组

来自分类Dev

Django UserManager create_user失败,无法调用“ NoneType”对象

来自分类Dev

PySpark RDD SortByKey() 无法正常工作

来自分类Dev

TypeError:运行排序功能时无法解压缩不可迭代的NoneType对象

来自分类Dev

Django'NoneType'对象不可迭代

来自分类Dev

NoneType对象不可迭代错误

来自分类Dev

在 PySpark / Python RDD 中过滤

来自分类Dev

无法在Google Colab上安装PySpark

来自分类Dev

使用地图/过滤器在 Pyspark 中查找 RDD 中的最大元素

来自分类Dev

Pyspark RDD:查找元素的索引

来自分类Dev

PySpark重新分区RDD元素

来自分类Dev

当列表追加函数调用参数列表中的元素时,“NoneType”对象不可迭代

来自分类Dev

无法从通用元素的迭代器构建通用类型

Related 相关文章

热门标签

归档