Spark中使用多个正则循环匹配数据,速度慢的问题 10C

uaParserConfigs 是正则的List,里边是格map对应的{"regex":"************"}

 JavaRDD<String> inputWords = lines.map(new Function<String, String>() {

           @Override
           public String call(String s) throws Exception {
               for(int size = 0;size<uaParserConfigs.size();size++){
                    Matcher matcher = Pattern.compile(uaParserConfigs.get(size).get("regex")).matcher(s);
                    if(matcher.find()){
                        return  new String(s+"1");
                    }
                }
               return new String(s + "0");
           }
       });

速度特别慢,每分钟才处理几百条数据,怎么提高性能或者有没有其他的解决方案。

0

2个回答

0
wangwwenhui1321
QG_PASS 循环匹配数据 看代码片段
大约一年之前 回复

Pattern.compile(uaParserConfigs.get(size).get("regex")) 放外面

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
最近在公司需要计算手机信令数据 但是每次spark读取文件的时候都是把当天24小时从头到尾读取一遍 非常耗时,在一步操作中处理批量文件,这个要求很常见。举例来说,处理日志的MapReduce作业可能会分析一个月的文件,这些文件被包含在大量目录中。Hadoop有一个通配的操作,可以方便地使用通配符在一个表达式中核对多个文件,不需要列举每个文件和目录来指定输入如下图所示: 点击打开链接
spark dataframe 正则表达式匹配
spark的正则表达式匹配暂时只找到一个可用于dataframe处理数据的函数 val fake_data=hivecontext.read .format("com.databricks.spark.csv") .option("header","true") //这里如果在csv第一行有属性的话,没有就是"false" .option("inferSchema",true.t
代码+图文讲解spark中scala常用正则匹配
代码+图文讲解spark中scala常用正则匹配
循环取出正则匹配的内容(遍历).
     string[] namelist = null; Regex r = new Regex("/">(//b//w{3,6}//b)");//匹配3-6个字母或者汉字MatchCollection m = r.Matches(str);namelist = new string[m.Count];int i = 0;foreach
Scala中正则表达式以及与模式匹配结合
正则表达式 //"""原生表达 val regex="""([0-9]+)([a-z]+)""".r val numPattern="[0-9]+".r val numberPattern="""\s+[0-9]+\s+""".r模式匹配一 //findAllIn()方法返回遍历所有匹配项的迭代器 for(matchString <- numPattern
SparkSQL实现查找Hive表集合中的多个元素匹配
sqlContext.sql("select app, word, priority, searchapp, searchcount, genre, type from ansearchapp LATERAL VIEW OUTER explode(searchapp) s AS app where app = %d " %g)
大数据 (二十四)Hive【Hive 正则匹配】
说在前面的话   hive的正则表达式,是非常重要!作为大数据开发人员,用好hive,正则表达式,是必须品!        Hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。 1.regexp 语法: A REGEXP B  操作类型: strings  描述: 功能与RLIKE相同 sele
sparksql 正则匹配总结
这里对sql常用的一些正则匹配作一些匹配,都是来源别人博客,此处稍作整理和总结。mark一下 1、sql中有like 和 rlike,具体区别 like: %:匹配零个及多个任意字符  _:与任意单字符匹配  []:匹配一个范围  [^]:排除一个范围  ESCAPE  关键字定义转义符  WHERE   ColumnA   LIKE   '%5/%%'   ESCAPE   '/'
正则表达式太慢?这里有一个提速100倍的方案(附代码)
作者:Vikash Singh编译:肖依月、吴双、钱天培“当遇到一个文本处理问题时,如果你在第一时间想到了正则表达式,那么恭喜你,你的问题从一个变成了俩!“如果你曾参与过文本数据分析,正则表达式(Regex)对你来说一定不陌生。词库索引、关键词替换……正则表达式的强大功能使其成为了文本处理的必备工具。然而, 在处理大文本的情境下,正则表达式的低效率却常常让人抓耳挠腮。今天,文摘菌将为你介绍一款比正
IMF spark 正则表达式 统计apache log 日志
IMF  spark 正则表达式统计apache log 日志 import com.google.common.collect.Lists; import scala.Tuple2; import scala.Tuple3; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD
C#遍历正则匹配到的多个结果的代码
把开发过程中比较重要的内容片段收藏起来,如下内容是关于C#遍历正则匹配到的多个结果的内容,应该是对大家有一些用处。 Regex regex = new Regex(strPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline); if (regex.IsMatch(htmlContent)) { Match...
java正则表达式的匹配结果遍历方法find()和matches()不同
一、使用matches() Pattern p = Pattern.compile("正则表达式");Matcher m = p.matcher("预匹配的字符串");if(m.matches()) {    m.group(1); //匹配第1项    m.group(2); //匹配第2项} 二、使用find() public static void main(String[
Hadoop和spark中读取文件通配符使用举例
在单个操作中处理一批文件,这是一个常见的要求。举例来说,处理日志的MapReduce作业可能需要分析一个月内包含在大量目录中的日志文件。在一个表达式中使用通配符来匹配多个文件是比较方便的,无需列举第个文件 和目录来指定输入,该操作称为”通配”(globbing)。Hadoop 为执行通配提供了两个FileSystem方法:public FileStatus[] globStatus(Path pat
ruby的正则循环查找
写了一个从html中提取图片的helper方法,不过不知道怎么让正则一个个匹配下去,似乎String.scan不能达到我的要求,所以还是用了递归方法,代码如下:  def get_only_pic(cbody,result=&quot;&quot;)    results=/&amp;lt;img (.*) src=\&quot;(.*)\&quot; (.*)\/&amp;gt;/i.match(cbody)        if results ==...
spark读取hdfs文件的路径使用正则表达式
spark.read.json("/flume/product/160/raw1/2017/05/23/*[1-9]")读取文件,文件以数字结尾.
正则表达式的效率与优化
以下内容整理自《PHP核心技术与最佳实践》 一、使用字符组代替分支条件 eg. 使用[a-d]表示a~d之间的字母,而不是使用(a|b|c|d) function regTest($pattern,$str,$cnt){ $start=microtime(true); for ($i=0;$i&amp;amp;amp;amp;lt;$cnt;$i++){ preg_match($patt...
Scala中处理正则
object ScalaRegex { def main(args: Array[String]): Unit = { //例子一整个字符串匹配模式 println(&quot;51&quot;.matches(&quot;&quot;&quot;\d+&quot;&quot;&quot;))//true //例子二查询是否包含复合正则的模式 println(&quot;&quot;&quot;\d+&quot;&quot;&qu
在hive或impala中编写udf清洗数据时,常用的正则
在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。我的案例下载链接:https://download.csdn.net/download/shuimofengyang/10833187 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4、匹配中文,英文字母和数字及下...
JAVA总结(五):多行匹配正则表达式的两种解析方法
在利用正则表达式的解析过程中,我们经常会遇到多行字符输出的情形,例如执行执行dir命令,如输出如下结果:1 个文件 59,629,625 字节 7 个目录 41,259,528,192 可用字节针对这样的输出结果,我们有解析方法: 1. 将整个输出结果作为一个正则表达式解析; 2. 在输出结果中按每行依次进行解析;方法一:跨行解析对于跨行解析,首先需要解决的问题是如何匹配换行符,在大部分
spark正则化
介绍了spark中L1与L2正则化的实现
JS正则获取文本中的多个匹配
http://nece001.blog.163.com/blog/static/8563360201211044415884/
spark笔记之模式匹配和样例类
阶有一个十分强大的模式匹配机制,可以应用到很多场合:如开关语句,类型检查等并且阶还提供了样例类,对模式匹配进行了优化,可以快速进行匹配。 1.1。匹配字符串 [AppleScript] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 ...
易语言正则批量匹配
真他妈坑,今天被易语言正则坑了一个下午,不过总算解决了,现在来总结一下: 1、处理易语言正则匹配处理文本问题,可以在正则表达式类的创建方法里设置自动处理引号,我擦,忘记了这个,搞得我一直在解决引号问题 2、另外一个坑点是不要直接复制网页源码。要复制你调试输出的,因为直接复制网页的可能排版啥的有问题。 3、还有一个是不要选择多行。。。。
关于php正则匹配html格式字符串每次只匹配一行问题解决
我们如果要用php的正则去匹配某个html格式的字符串,如下面这种情况:在浏览器打开,其实他是解析成了html格式呈现出来,并且用php的函数preg_match()去匹配的时候,他每次只匹配到一行,比如说第一行的不能判断它的下一行是否出现了所以就先采用了一种将html格式先转移成字符串的形式然后再去匹配。如下两行代码和浏览器呈现效果:将尖括号去掉之后:字符串变成这样之后就可以比较好的去匹配了
java正则匹配返回所有匹配项
List getMatchers(String regex, String source){ Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(source); List list = new ArrayList<>(); while
C#用正则表达式高效替换变量
有的时候我们需要进行简单的字符串变量替换. 当然最新的.net已经支持 {name} 这种替换方式. 但是,老的.net是不支持的. 本方法是把“{{varName}}” 这种变量替换成 对应的数值. 例如 Week1 = 星期一 Week2 = 星期二 Week3 = 星期三 Week4 = 星期四 “今天是{{Week1}}, 明天是{{Week2}}” 替换结果 “今天是星...
正则表达式的效率
判断航空公司二字码是否正确的方法: 普通的判断: private boolean strMatch(String str){                  if(str == null || "".equals(str)){             return false;         }                  if(str.length() != 2){
python里使用正则表达式来替换匹配成功的组并输出替换的次数
在前面我们学习过怎么样限制替换的次数,如果我们想知道正则表达式里匹配成功之后,替换字符串的次数,那么需要怎么办呢?这是一个好问题,这时就需要采用另一个外函数subn()了。这个函数不但输出替换后的内容,还输出替换的次数,例子:#python 3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # import re
scala正则表达式获取url的host
小编今天要分享的是,通过正则表达式获取url中的host, 在实际开发中这是很常用的,大家收好了。 代码:import java.util.regex.Pattern/** * Created by Administrator on 2017/9/26. */ object UrlGeyHostTest { def main(args: Array[String]): Unit = {
PHP使用正则表达式分离出HTML里我们所需的数据,封装到二维数组里
HTML代码(reg.html)<?php $str = '<HTML sizset="0" sizcache="8"> <HEAD> <TITLE> 支付宝 - 网上支付 安全快速! </TITLE> <META charset=GBK> <LINK rel=icon type=image/x-icon
SQL模糊查询及扩展正则表达式的使用
模糊查询时,均不能使用=或!=。本文中用"dot"替代"." 模糊查询分为两张方法: 1.完全匹配法(LIKE/NOT LIEk) _ 表示一个字符 % 表示一个或多个字符 [charlist] 字符列中的任何单一字符 [^charlist]/[!charlist] 不在字符列中的任何单一字符 查找含有'w'的行: SELECT * FROM pet WHERE
孙其功陪你学之——Spark 正则化和SparkSQL
本博文程序是读取hadoop的hdfs中的文件,使用正则化解析出规定格式的数据,然后加载到sparkSQL数据库中。 正则化如果不太了解,请看正则表达式30分钟入门教程 package com.spark.firstApp import org.apache.spark.SparkContext import org.apache.spark._ import org.apache.lo
简易正则替换html字符串中的文字(不影响标签属性)
不影响标签属性的简易正则替换html字符串中的文字(原理为使用正则取出html中><之间的内容 然后使用循环从其中匹配对应的内容进行替换)
正则掌握程度测试题 答案(待完成)
尝试解答一波,默认 ^$不匹配在换行符 原文地址 https://www.zybuluo.com/Zjmainstay/note/709093 注:解答时,点击“题样”链接,进行测试即可。  鼠标悬停到每段文字,右侧+可评论,大家可评论留下你的答案,我看到会适当加以回复,建议带上你们的Q群昵称(434252251 专精正则表达式)。 正则掌握程
Java正则表达式匹配多行
默认情况下.*中的.只能匹配出\n以外的字符,如果遇到要匹配的字符串包含回车换行符(多行),则正则表达式遇到换行符后会停止,导致包含回车换行符的串不能正确匹配,解决的办法是: 1、使用Pattern和Matcher对象 设置Pattern模式为:Pattern.DOTALL 2、使用String.replaceAll() 正则表达式写法: String reg = "(?s)'.*'";
spark用正则表达式处理需要将多个输入文件路径作为输入的问题
一、spark用正则表达式处理需要将多个输入文件路径作为输入的问题 1、spark需要处理过去半个月的数据,每天的数据再hdfs上存到一个文件中,将近15个输入目录,此时可以采用如下正则匹配的写法,将代码简化: import datetime def produce_half_month(thedate): current_day = thedate # current_da...
记一次postgresql中使用正则表达式
记一次postgresql中使用正则表达式 RT:在一次任务中,需要筛选出时间格式合法的数据,数据格式为String,需要时间格式为yyyy-MM-dd 使用 ~ 后面跟着正则表达式就能够完成 SELECT * from table WHERE param ~ '^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$' 如果需要筛选...
scala 中文匹配正则表达式
import scala.util.matching.Regex //匹配中文 中文 [\u4e00-\u9fa5] var p_t=new Regex("[\u4e00-\u9fa5]+:[\u4e00-\u9fa5]+")
正则掌握程度测试题
正则掌握程度测试题 1、分组提取/非捕获组 分组,是正则里一个非常重要的概念,我们需要针对某个区域提取数据,往往需要依赖分组。而分组,其实就是正则里()括住的部分。 1.1分组提取 需求:再分组1中匹配meta中author属性的值 源串: &amp;lt;meta author=&quot;Zjmainstay&quot; /&amp;gt; another author=&quot;Zjmainstay too&quot; 预期:分...
scala之正则表达式(一)基础匹配
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组 成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和另一个字符串 ,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”); 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。 每一次
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习中常见的问题 java学习中遇到的问题