`

Spark中分布式使用HanLP(1.7.0)分词示例

阅读更多

 

HanLP分词,如README中所说,如果没有特殊需求,可以通过maven配置,如果要添加自定义词典,需要下载“依赖jar包和用户字典".

分享某大神的示例经验:

是直接"java xf hanlp-1.6.8-sources.jar" 解压源码,把源码加入工程(依赖本地jar包,有些麻烦,有时候到服务器有找不到jar包的情况)

按照文档操作,在Spark中分词,默认找的是本地目录,所以如果是在driver中分词是没有问题的。但是如果要分布式分词,是要把词典目录放在HDFS上面,因为这样每台机器才可以访问到 【参考代码】

最好把新增词典放在首位(没有放在首位好像没有生效).第一次使用时,HanLP会把新增txt文件,生成bin文件,这个过程比较慢。但是只需要跑一次,它会把bin文件写到HDFS路径上面,第二次以后速度就快一些了。

注意到issue中说,只可以在mapPartition中使用

参考scala代码

class HadoopFileIoAdapter extends IIOAdapter {

 

  override def create(path: String): java.io.OutputStream = {

    val conf: Configuration = new Configuration()

    val fs: FileSystem = FileSystem.get(URI.create(path), conf)

    fs.create(new Path(path))

  }

 

  override def open(path: String): java.io.InputStream = {

    val conf: Configuration = new Configuration()

    val fs: FileSystem = FileSystem.get(URI.create(path), conf)

    fs.open(new Path(path))

  }

}

 

def myfuncPerPartition_ ( iter : Iterator [String] ) : Iterator[(Int, mutable.Buffer[String])]  = {

      println("run in partition")

      val keyWordNum = 6

      HanLP.Config.IOAdapter = new HadoopFileIoAdapter

      val ret = iter.filter(_.split(",",2).length==2)

        .map(line=>(line.split(",",2)(1).trim.hashCode, HanLP.extractKeyword(line.split(",",2)(0),keyWordNum)

          .map(str=>str.filterNot(stopChar.contains(_))).filter(w=>(w.length>1 || ( w.length==1 && white_single_word.contains(w(0))) ))

          .filterNot(stopWords.contains(_)).take(keyWordNum).distinct))

      ret

    }

 

//调用

raw_data.repartition(100).mapPartitions(myfuncPerPartition_)

 

 

分享到:
评论

相关推荐

    hanlp1.7jar包下载

    标题“hanlp1.7jar包下载”表明我们要讨论的是HanLP的1.7版本的Java库,通常以.jar格式提供,方便Java开发者在项目中引入和使用。 HanLP 1.7.0是其历史版本之一,可能包含了一些特定的功能改进和优化。虽然没有具体...

    seata-1.7.0安装包

    总的来说,Seata-1.7.0 安装包是针对分布式事务管理的重要工具,它致力于简化微服务架构中的事务处理,并在性能、稳定性和易用性上持续进步。如果你正面临分布式事务的挑战,那么 Seata 是一个值得考虑的解决方案。...

    jdk1.7.0_80

    3. 增强的switch语句:Java 7允许在switch语句中使用字符串对象,这在处理枚举类型或基于字符串的条件时非常有用。 4. 多异常捕获:在Java 7中,可以在一个catch块中捕获多种类型的异常,使得代码更加简洁。 5. 非...

    gmock-1.7.0.zip

    《gmock-1.7.0.zip:Google Mock框架在MySQL移植中的应用》 Google Mock,简称gmock,是Google开发的一个开源C++测试框架,它允许开发者创建和使用模拟对象进行单元测试。gmock-1.7.0.zip是一个包含gmock 1.7.0版本...

    zui-1.7.0-dist

    5. **Images** 文件夹:存放了框架中使用的各种图像资源,如示例图片、背景图片等。 6. **Plugins** 文件夹:ZUI依赖于一些第三方插件,如jQuery、bootstrap等,这个目录下包含了这些插件的完整版本和压缩版本,...

    jre_1.7.0_x64

    3. **开关表达式**:Java 7允许在switch语句中使用字符串,使得与枚举类型配合使用时更加灵活。 4. **钻石操作符**:在创建匿名类或泛型实例时,编译器可以自动推断出类型参数,简化代码。 5. **NIO.2**:Java 7...

    apr-1.7.0.tar.gz 下载(5积分)

    现在,APR 1.7.0已成功安装在你的系统中,可以作为依赖库供其他程序如Ganglia使用。Ganglia是一款分布式监控系统,它依赖于APR来处理底层的I/O操作和其他系统级任务。在安装Ganglia时,确保已经正确安装并配置了APR...

    jdk1.7.0_79

    1. **多版本字符串字面量**:允许在同一程序中使用不同版本的Unicode字符,提高了字符串处理的灵活性。 2. **钻石操作符**:在创建匿名类或泛型实例时,编译器可以自动推断出类型参数,简化了代码。 3. **try-with...

    jdk1.7.0_80.rar

    4. **字符串in switch**:现在可以直接在switch语句中使用字符串,增强了语言的灵活性。 5. **NIO.2**:提供了新的文件系统API,支持文件路径操作,异步I/O以及文件属性查询等功能。 6. **类型推断**:Java 7引入...

    最新版GTest 1.7.0

    1. **编写测试用例**:定义一个测试用例类,继承自`testing::Test`,并在类中使用TEST_F宏声明测试点。 2. **设置测试点**:在测试点中,使用断言函数检查代码行为,如EXPECT_EQ比较两个值是否相等,ASSERT_FALSE...

    Spark简单测试案例

    在安装 Spark 后,可以直接使用其内置的一些示例程序来快速了解 Spark 的基本用法。 ##### 2.1 启动示例程序 可以通过 `spark-submit` 命令来提交 Spark 内置的示例程序。例如,启动 `SparkPi` 示例程序的命令如下...

    jdk1.7.0_79.zip

    在这个特定的资源"jdk1.7.0_79.zip"中,我们讨论的是Oracle JDK的第7个主要版本的第79次更新。这个版本适用于Windows操作系统。 **1. JDK的组成** JDK的核心组件包括: - **Java编译器 (javac)**:将源代码编译成可...

    gmock_1.7.0.rar

    在这个gmock_1.7.0.zip压缩包中,包含了gmock框架的1.7.0版本,它是对gmock早期版本的更新,旨在提供更稳定、更全面的测试支持。这个版本兼容了当时的流行开发环境,例如VLC(VideoLAN Client)项目和Google相关项目...

    kudu-1.7.0+cdh5.15.1安装包

    本文将详细介绍如何在Spark环境下安装Kudu 1.7.0+CDH5.15.1,并探讨其在实际应用中的价值。 首先,我们来了解下Kudu的核心特性。Kudu采用了分层存储架构,通过主从复制和多版本并发控制(MVCC)确保数据的高可用性...

    jdk1.7.0_45-x64

    描述中提到的“免安装版”,意味着用户不需要进行传统的安装过程,而是可以直接下载这个压缩包,解压后在系统中配置相应的环境变量即可使用。这种方式方便快捷,尤其适合那些需要快速部署或临时使用Java环境的场合。...

    firebug 1.7.0 官方版本

    因此,虽然Firebug 1.7.0是一个官方版本,但对于现代的Web开发,可能需要转向使用浏览器内置的开发者工具或类似替代品,如Chrome的DevTools。 总的来说,Firebug 1.7.0作为一款经典工具,它在当时的Web开发领域中...

    java1.7.0环境配置安装方法

    在Windows XP系统中安装配置Java 1.7.0(JDK 1.7.0)是一项基本但重要的任务,尤其对于开发人员来说。本文将详细介绍如何在Windows XP环境下完成JDK 1.7.0的安装以及环境变量的配置。 #### 二、下载与准备 首先,...

Global site tag (gtag.js) - Google Analytics