当前位置: 首页 > 知识库问答 >
问题:

是否可以在map()中删除Pyspark行?

万乐逸
2023-03-14

在Pyspark中执行映射函数时,我经常希望删除映射函数失败的数据(在本例中,转换为xml)。我想知道在映射步骤中是否有一个干净的方法来实现这一点?

返回blank的明显解决方案仍然会在RDD中保留一个对象。

### **** skip pyspark boilerplate ****

### function defs
from lxml import etree as ET
def return_valid_xml(one_line_input):
    try:
        root = ET.fromstring(one_line_input)
        return root
    except:
        return

### code that returns stuff for every line of input
valid_xml_data = someDataStrings.map(lambda x: return_valid_xml(x))

创建一个聪明的筛选器是浪费我的时间,而像try/except onet.fromString()return true这样的哑筛选器是浪费计算时间,因为我会对XML进行两次解析。

共有1个答案

松俊才
2023-03-14

您可以使用flatmap并在失败时返回一个空列表:

python prettyprint-override">def return_valid_xml(one_line_input):
    try:
        root = ET.fromstring(one_line_input)
        return [root]
    except:
        return []

valid_xml_data = someDataStrings.flatMap(return_valid_xml)

此外,您可以只传递return_valid_xml,而不是定义lambda函数。

 类似资料:
  • 问题内容: 如果我有发言权,。 当然,分配新的属性没有问题, 但是之后我想将其删除,因此这里无济于事。 所以, 是这样的。但是,还有一种更“优雅”的方式吗? 问题答案: 这适用于数组元素,变量和对象属性。 例:

  • 问题内容: Java 是这里的关键。我需要能够删除文件,但是用户希望能够从回收站中“取消删除”。据我所知这是不可能的。有人知道吗? 问题答案: 由于各种原因,Windows 没有简单地对应于回收站的文件夹的概念。 正确的方法是使用JNI调用Windows API,并在结构中设置标志。 SHFileOperation文档 使用SHFileOperation复制文件的Java示例(同一文章中的“回收站

  • 问题内容: 有谁知道您是否可以删除html代码中留下的尖角注释? 例如:如果我使用ngRepeat并且没有要重复的项目,AngularJS将保留以下内容: 问题答案: 此注释是由进行 元素 包含的结果。看起来这几乎是从时间的曙光开始发生的(以角度表示),并且只要指令要求元素包含,就会创建它。 虽然您当然可以通过直接的HTML操作将其清除,但这并不是一件安全的事情。阅读了源代码后,建议删除原始元素后

  • 是否可以在数据消耗后从Kafka中删除数据? 我正在使用Kafka和Zookeeper组合在2个节点之间交换一些数据。我在Kafka的内存方面遇到了问题,因为我要插入这么多数据。这样,我需要在使用Kafka后清理它们中的数据。这可能吗?

  • 我在服务器中执行docker()清洁命令: 令我惊讶的是,这个命令删除了停止的容器。这就是问题所在,有些容器因为某种原因停止了,但我仍然想在未来使用它。现在它被删除了,有没有可能恢复错误删除的停止的容器?