spark + ansj 对大数据量中文进行分词

    目前的分词器大部分都是单机服务器进行分词,或者使用hadoop mapreduce对存储在hdfs中大量的数据文本进行分词。由于mapreduce的速度较慢,相对spark来说代码书写较繁琐。本文使用spark + ansj对存储在hdfs中的中文文本数据进行分词。
    首先下载ansj源码文件,下载地址为https://github.com/NLPchina/ansj_seg,同时需要下载nlp-lang.jar包,下载地址上述网站中可以看到。由于spark传输数据必须进行序列化,而ansj中的属性类都没有实现序列化,需要将ansj_seg-master/src/main/java/org/ansj/domain中的属性类AnsjItem、Nature、NewWord、NumNatureAttr、PersonNatureAttr、Term、TermNature、TermNatures分别实现Serializable接口。然后使用maven的mvn install生成ansj_seg-2.0.8.jar包,将编译的ansj_seg-2.0.8.jar包 和之前下载的nlp-lang-0.3.jar包加入到spark依赖中,spark便可对hdfs中的文本进行分词。另外,将序列化后编译的jar上传至csdn,可以直接下载使用。
实例如下:

import org.apache.spark.SparkContext
import org.ansj.domain.Term
import org.ansj.splitWord.analysis.ToAnalysis
import org.ansj.util.FilterModifWord
import org.ansj.library.UserDefineLibrary
import java.util.Arrays

object TokenTest extends App
{
  val sc = new SparkContext 
  val numpatitions = 100
  val text = sc.textFile("/path/to/ChineseFile", numpatitions).map { x =>
     val temp = ToAnalysis.parse(x)
//加入停用词 
FilterModifWord.insertStopWords(Arrays.asList("r","n"))
//加入停用词性     
FilterModifWord.insertStopNatures("w",null,"ns","r","u","e")
val filter = FilterModifWord.modifResult(temp)
//此步骤将会只取分词,不附带词性
val word = for(i<-Range(0,filter.size())) yield filter.get(i).getName
     word.mkString("\t")
    }
  text.saveAsTextFile("/pathr/to/TokenFile")
}

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
当今最红的名词是大数据,掌握趋势,才能赢得未来!首届中国大数据技术沙龙会议暨超人学院技术交流会,邀请各位前来参会。在这里,你可以了解大数据技术的趋势,掌握企业对于技术的最新动态,学习和分享你在工作中的经验及问题,你可以分享也可以提问,让你掌握大数据最前沿的技术。奔跑吧,兄弟!赶快报名参加!更多精彩内容抢先看!
1、什么是云服务? 能够部署高度可用的且可无限缩放的应用程序和API。简而言之,就是你写的CMD程序按照一定的框架进行少量修改就能运行在Azure云平台上。 2、Azure云服务有什么特点? (1)专注应用程序而不是硬件,PaaS的一种。 (2)支持多种框架和语言。 (3)集成了运行状况监视和负载平衡。 (4)自动缩放优化成本和性能 3、建立云服务之前,我们需要建立一个云存储,来记录我们的程序的日志信息(当然,这不是必须的) (1)选择左边导航栏的“存储”。主面板上显示的是所有已有的存储列表。点击下方的新

Linux快速配置svn库 - 2015-06-18 06:06:43

[Author]: kwu  Subversion依然是大部分公司代码管理的首选,本文介绍Linux快速配置svn库的步骤: 1、安装svn配置库,这里使用的是centos6.6自带的svn svnserve --version 显示版本: svnserve,版本 1.6.11 (r934486) 2、创建svn配置仓库 mkdir /opt/svn/repositoriessvnadmin create /opt/svn/repositories 3、修改配置文件,相关路径 cd /opt/svn/re
1、pom.xml错误:Missing artifact jdk.tools:jdk.tools:jar:1.7 jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中: dependencygroupIdjdk.tools/groupIdartifactIdjdk.tools/artifactIdversion1.7/versionscopesystem/scopesystemPath${JAVA_HOME}/lib/tools.jar/system

1006-Hive的自定义UDF函数 - 2015-06-17 20:06:09

hive可以任意定义一个函数,然后该函数放到hive的classpath下,在进入hive中,使用该命令操作 场景:设中国移动的用户在商城上下单,下单记录的主要字段包括 订单号     手机号码               商品编码          商品数量          渠道 10000     18810637891     bm0001          1                      0001   10001     18710637891     bm0002        

VirtFS技术学习 - 2015-06-17 20:06:08

背景         在虚拟化领域中,向虚拟机提供虚拟化设备的技术从系统层次上,可以分为三种:硬件层虚拟化、驱动层虚拟化、系统层虚拟机。这三种技术也是按照这种先后排序依次出现的,后一种技术是为弥补前一种技术的不足而被发明出来。不过有时为了达到新的要求,需要在原本的优点之间进行取舍。         硬件层虚拟化,即完全虚拟一个物理设备,提供一个完整设备指令集。对于这类虚拟化技术,使用自带的设备驱动程序,操作系统可以不经任何修改直接运行在虚拟环境中。如:虚拟 IDE 设备、虚拟 E1000 网卡等。虚拟机对
       当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并且存储到若干台单独的计算机上。管理网络中跨多台计算机存储的文件系统被称为分布式文件系统(distributed  filesystem).        分布式文件系统架构于网络智商,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更加复杂,比如文件系统能够容忍节点故障但是不丢失数据就是一个很大的挑战。        HDFS的全称是Hadoop  Distributed  Filesystem,在非正式

Hive快速入门 - 2015-06-17 20:06:29

一、      什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。同时,这个语言也允许熟悉 MapReduce  开发者的开发自定义的 mapper  和 reducer  来处理内建的 mapper 和 reducer  无法完成的复杂的分析工作。 二、      为什么使用Hive 学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的M
初始化 Glance (1). 安装 Glance 服务: [root@openstack ~]# yum -y installopenstack-glance   (2). 创建 Glance 数据库: [root@openstack ~]# openstack-db--init --service glance   (3). 修改配置文件中的数据库链接: [root@openstack ~]# openstack-config--set /etc/glance/glance-api.conf DEFA

hive与hbase集成 - 2015-06-17 14:06:35

详细步骤 一   、简介 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。   其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。 Hive 与 HBase 的整合功能的实现是利用两者本身对外的 API 接口互相进行通信,相互通信主要是依靠 hive_hbase-