使用JSoup清理Scala Spark数据帧

使用JSoup清理Scala Spark数据帧,scala,apache-spark,dataframe,jsoup,user-defined-functions,Scala,Apache Spark,Dataframe,Jsoup,User Defined Functions,我有一个Scala Spark数据帧: id, content 1, "<p>Some paragraph</p>" 2, "<p><li>Some listings</li></p>" ... 它完成了任务,但性能不好,而且我读到UDF速度很慢,有没有办法将该函数应用到优化并发性的列中以获得结果 理想输出: id, clean_content 1, "Some paragraph" 2, "Some listings"

我有一个Scala Spark数据帧:

id, content
1, "<p>Some paragraph</p>"
2, "<p><li>Some listings</li></p>"
...
它完成了任务,但性能不好,而且我读到UDF速度很慢,有没有办法将该函数应用到优化并发性的列中以获得结果

理想输出:

id, clean_content
1, "Some paragraph"
2, "Some listings"
...

除非您在接近实时的管道中遇到真正的延迟问题,否则只需使用UDF并继续。Spark中存在着巨大的性能杀手,比如
连接
、窗口函数、
收集列表
f(不同的列)
(针对不同的
f
)、
合并(1)
/
重新分区(1)
映射组
、好的老的
groupByKey`(以及所有自主开发的变体)等等,这些是你应该担心的。经常在头上到处流汗(特别是如果不是以客人的语言工作的话)是没有意义的。只需考虑火花和已建立的包在很多地方大量使用UDF:),如果您只想删除标签,<代码> CuxXML ,可能会有诀窍(是的,它是另一个UDF)。除非您在接近实时流水线中体验到真正的延迟问题,否则只需使用UDF并继续运行。Spark中存在着巨大的性能杀手,比如
连接
、窗口函数、
收集列表
f(不同的列)
(针对不同的
f
)、
合并(1)
/
重新分区(1)
映射组
、好的老的
groupByKey`(以及所有自主开发的变体)等等,这些是你应该担心的。经常在头上到处流汗(特别是如果不是以客人的语言工作的话)是没有意义的。只需考虑SARK和已建立的包在很多地方大量使用UDF:)如果您只想删除标签,<代码> CuffelXML,可能会有诀窍(是的,它是另一个UDF)。
id, clean_content
1, "Some paragraph"
2, "Some listings"
...