При выполнении функции сопоставления в Pyspark я часто хочу отбрасывать данные, которые не соответствуют функции сопоставления (в этом примере преобразование в xml).Мне было интересно, есть ли чистый способ сделать это на этапе сопоставления?
Очевидное решение возврата пустого по-прежнему оставляет объект в СДР, например.
### **** 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))
ПридуматьУмный фильтр - пустая трата моего времени, а тупой фильтр, такой как попытка / исключение ET.fromstring()
return true
- пустая трата вычислительного времени, так как я анализирую XML дважды.