查看: 92|回复: 0

在Spark技术框架中使用Scala正则表达式处理文本数据

[复制链接]
论坛徽章:
0
发表于 2018-6-10 20:29 | 显示全部楼层 |阅读模式
  Spark是当前大数据框架中应用非常广泛的一个框架,而在机器学习领域,随着数据量的增大以及计算复杂度的升高,分布式的机器学习框架也越来越受到关注,Spark ML就是一个日渐常用的分布式机器学习框架,在机器学习中,对于原始数据的处理非常重要,此时就有可能涉及到对文本的清洗,而正则表达式是文本处理的一大利器,我们知道Python中支持正则表达式,能够进行复杂的文本处理,而Spark源码是由Scala实现,Scala本身是支持正则表达式的,下面是一个通过Scala正则表达式将文本中的标点符号全部清除的案例:
  原始数据:
  The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
  代码:

  val parttern01 = new Regex("[^a-z-]")
  val word01 = parttern01 replaceAllIn(word, " ")
  val parttern02 = new Regex("\\s+")
  val word02 = parttern02 replaceAllIn(word01, " ")
  第一个正则表达式将所有不是字母和中划线的字符全部替换为了空格,第二个正则表达式将所有的连续的大于等于一个的空格替换为一个空格,便于后续按照空格提取单词。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2018-7-22 20:59 , Processed in 0.135499 second(s), 30 queries .