我们在日常活动中使用spark。在处理过程中,我们希望基于描述列中的一些正则表达式提取地理信息。我们试图找出可用来提取CITY信息的正则表达式,最终,每个城市CA,NY等都有数百个正则表达式。
我们已经为城市CA和NY等创建了正则表达式的映射,并通过广泛的转换将该数据加载到spark中。安在自定义udfs中使用了这些规则来提取城市信息。
问题是规则增加时,执行时间开始增加,因此寻找一些可以以分布式方式执行规则的选项。
我们也可以将基于规则的数据提取扩展到其他字段。
我还尝试过“ Drools”集成火花,以防万一我找不到任何优化的解决方案。
期待!
R,克里希语
请确保您的Spark作业正在使用大量并行性。没有这种小程度的缓慢度,感觉会更大。从理论上讲,正则表达式处理不应该那么繁重,并且如果在记录(独立于其他记录)上独立运行,那么它也将具有可伸缩性。请避免在大文档上运行正则表达式,而应在文档的不同部分或小文档上并行运行。
请检查您的数据分区是否超过Spark作业使用的CPU数量的3倍。也要避免许多小的分区。