标签:
package nlpir2015.rf.cs.swjtu; import com.sun.jna.Library; //import com.sun.jna.Library; public interface CLibrary extends Library{ //初始化 public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode); //对字符串进行分词 public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged); //对TXT文件内容进行分词 public double NLPIR_FileProcess(String sSourceFilename,String sResultFilename, int bPOStagged); //从字符串中提取关键词 public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut); //从TXT文件中提取关键词 public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut); //添加单条用户词典 public int NLPIR_AddUserWord(String sWord); //删除单条用户词典 public int NLPIR_DelUsrWord(String sWord); //从TXT文件中导入用户词典 public int NLPIR_ImportUserDict(String sFilename); //将用户词典保存至硬盘 public int NLPIR_SaveTheUsrDic(); //从字符串中获取新词 public String NLPIR_GetNewWords(String sLine, int nMaxKeyLimit, boolean bWeightOut); //从TXT文件中获取新词 public String NLPIR_GetFileNewWords(String sTextFile,int nMaxKeyLimit, boolean bWeightOut); //获取一个字符串的指纹值 public long NLPIR_FingerPrint(String sLine); //设置要使用的POS map public int NLPIR_SetPOSmap(int nPOSmap); //获取报错日志 public String NLPIR_GetLastErrorMsg(); //退出 public void NLPIR_Exit(); }
3、分词类feici
package nlpir2015.rf.cs.swjtu; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.sun.jna.Native; public class fenci { //Windows下的加载方式。如果需要支持Linux,需要修改这一行为libNLPIR.so的路径。 String Path=System.getProperty("user.dir").toString(); CLibrary Instance = (CLibrary)Native.loadLibrary("NLPIR", CLibrary.class); private boolean initFlag = false; public boolean init(){ String argu = null; // String system_charset = "GBK";//GBK----0 int charset_type = 1; int init_flag = Instance.NLPIR_Init(argu, charset_type, "0"); String nativeBytes = null; if (0 == init_flag) { nativeBytes = Instance.NLPIR_GetLastErrorMsg(); System.err.println("初始化失败!fail reason is "+nativeBytes); return false; } initFlag = true; return true; } public boolean unInit(){ try { Instance.NLPIR_Exit(); } catch (Exception e) { System.out.println(e); return false; } initFlag = false; return true; } public String parseSen(String str){ String nativeBytes = null; try { nativeBytes = Instance.NLPIR_ParagraphProcess(str, 0); } catch (Exception ex) { // TODO Auto-generated catch block ex.printStackTrace(); } return nativeBytes; } public CLibrary getInstance() { return Instance; } public boolean isInitFlag() { return initFlag; } }
4、编写MapReduce函数
package segwords.rf.cs.swjtu; import java.io.IOException; import nlpir2015.rf.cs.swjtu.fenci; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; public class SegWords { public static class SegWordsMap extends Mapper<Object, Text, Text, Text> { fenci tt = new fenci(); // protected void setup(Context context) throws IOException, InterruptedException { tt.init(); } public void map(Object key, Text value,Context context) throws IOException { String line = value.toString(); line = tt.parseSen(line.replaceAll("[\\pP‘’“”]", "")); try { context.write(new Text(""),new Text(line)); System.out.println(line); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void cleanup(Context context){ tt.unInit(); } } public static class SegWordsReduce extends Reducer<Text, Text, Text, Text> { public void reduce(Text key, Text value, Context context) throws IOException, NumberFormatException, InterruptedException { context.write(key, value); // } } }
package segwords.rf.cs.swjtu; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import segwords.rf.cs.swjtu.SegWords.SegWordsMap; import segwords.rf.cs.swjtu.SegWords.SegWordsReduce; public class tcMain { /** * @param args * @throws IOException * @throws InterruptedException * @throws ClassNotFoundException */ public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { // TODO Auto-generated method stub //JOB 1 TF Path segIn = new Path("hdfs://localhost:9000/input/segIn"); Path segOut = new Path("hdfs://localhost:9000/output/segOut"); Configuration conf1=new Configuration(); Job job1=new Job(conf1,"segWords"); FileSystem fs1 = FileSystem.get(conf1); if(fs1.exists(segOut)){ fs1.delete(segOut); } fs1.close(); job1.setJarByClass(SegWords.class); job1.setMapperClass( SegWordsMap.class); job1.setReducerClass( SegWordsReduce.class); job1.setOutputKeyClass(Text.class); job1.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job1, segIn); FileOutputFormat.setOutputPath(job1, segOut); //System.exit(job1.waitForCompletion(true)?0:1); job1.waitForCompletion(true); } }
5、并行分词结果
1)输入文档(2个文档模拟2个split)
2)结果
15/10/28 01:07:12 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/10/28 01:07:16 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/10/28 01:07:16 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/10/28 01:07:16 WARN mapreduce.JobSubmitter: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
15/10/28 01:07:18 INFO input.FileInputFormat: Total input paths to process : 2
15/10/28 01:07:18 INFO mapreduce.JobSubmitter: number of splits:2
15/10/28 01:07:18 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local598241144_0001
15/10/28 01:07:19 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/10/28 01:07:19 INFO mapreduce.Job: Running job: job_local598241144_0001
15/10/28 01:07:19 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/10/28 01:07:19 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter
15/10/28 01:07:19 INFO mapred.LocalJobRunner: Waiting for map tasks
15/10/28 01:07:19 INFO mapred.LocalJobRunner: Starting task: attempt_local598241144_0001_m_000000_0
15/10/28 01:07:19 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ]
15/10/28 01:07:20 INFO mapreduce.Job: Job job_local598241144_0001 running in uber mode : false
15/10/28 01:07:20 INFO mapreduce.Job: map 0% reduce 0%
15/10/28 01:07:20 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/input/segIn/segtest01:0+2359
15/10/28 01:07:23 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/10/28 01:07:23 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/10/28 01:07:23 INFO mapred.MapTask: soft limit at 83886080
15/10/28 01:07:23 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/10/28 01:07:23 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/10/28 01:07:23 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/10/28 01:07:40 INFO mapred.LocalJobRunner:
联合早报网 综合 讯 据 中新网 报道 中国 各地 2015年 前 三 季度 居民 收入 数据 近日 陆续 出炉 截至 10月 26日 中国 至少 已 有 25 省份 公布 数据 仅 上海 北京 全体 居民 人均 可 支配 收入 超过 3万 元 大关 而 城乡 差距 有 继续 扩大 的 趋势
据 中国 国家 统计局 数据 前 三 季度 全国 居民 人均 可 支配 收入 16367 元 按 常住 地 分 城镇 居民 人均 可 支配 收入 23512 元 扣除 价格 因素 实际 增长 68 农村 居民 人均 可 支配 收入 8297 元 扣除 价格 因素 实际 增长 81
据 报道 截至 10月 26日 除了 吉林 辽宁 黑龙江 内蒙古 山西 西藏 外 其余 25 省份 均 已 公布 了 当地 的 前 三 季度 居民 人均 可 支配 收入 数据
在 全体 居民 人均 可 支配 收入 方面 位居 前 两 位 的 为 上海 和 北京 其 人均收入 均 突破 3万 元 其中 上海 前 三 季度 居民 人均 可 支配 收入 为 37568 元 北京 前 三 季度 居民 人均 可 支配 收入 为 36047 元 这 两 地 也 是 目前 全国 仅 有 的 居民 人均 可 支配 收入 超过 3万 元 大关 的 地区
如果 单 单 从 在 城镇 居民 收入 方面 在 已 公布 数据 的 25 个 地区 中 上海 城镇 居民 人均 可 支配 收入 最高 达到 了 39686 元 北京 排 第二 为 39142 元 浙江 位列 第三 为 33464 元 这 三 地 也 是 目前 全国 仅 有 的 城镇 居民 人均 可 支配 收入 突破 3万 元 大关 的 地区 而 城镇 居民 人均 可 支配 收入 暂 排 在 末 位 是 甘肃省 仅 为 176385 元 收入 最高 和 最低 地区 的 差异 超 2万 元
据 统计 上海 北京 浙江 江苏 广东 天津 福建 山东 这 8 个 地区 的 城镇 居民 人均 可 支配 收入 超过 了 全国 平均 水平 而 在 农村 居民 收入 方面 上海 浙江 北京 天津 江苏 山东 辽宁 福建 海南 河北 这 10 个 地区 的 农村 居民 人均 可 支配 收入 超过 了 全国 平均 水平
在 已 公布 数据 的 25 个 地区 中 上海 农村 居民 人均 可 支配 收入 最高 达到 了 19237 元 浙江 排 第二 为 17004 元 北京 位 列 第三 为 16450 元 但 从 城乡 居民 人均收入 倍 差 来 看 与 全国 城乡 居民 人均收入 倍 差 283 相比 新疆 陕西 广西 云南 贵州 宁夏 青海 甘肃 这 8 地区 的 城乡 居民 人均收入 倍 差 超过 了 全国 水平
联合早报网 实习 编辑 关丽明
15/10/28 01:07:41 INFO mapred.MapTask: Starting flush of map output
15/10/28 01:07:41 INFO mapred.MapTask: Spilling map output
15/10/28 01:07:41 INFO mapred.MapTask: bufstart = 0; bufend = 2552; bufvoid = 104857600
15/10/28 01:07:41 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214368(104857472); length = 29/6553600
15/10/28 01:07:41 INFO mapred.MapTask: Finished spill 0
15/10/28 01:07:41 INFO mapred.Task: Task:attempt_local598241144_0001_m_000000_0 is done. And is in the process of committing
15/10/28 01:07:42 INFO mapred.LocalJobRunner: map
15/10/28 01:07:42 INFO mapred.Task: Task ‘attempt_local598241144_0001_m_000000_0‘ done.
15/10/28 01:07:42 INFO mapred.LocalJobRunner: Finishing task: attempt_local598241144_0001_m_000000_0
15/10/28 01:07:42 INFO mapred.LocalJobRunner: Starting task: attempt_local598241144_0001_m_000001_0
15/10/28 01:07:42 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ]
15/10/28 01:07:42 INFO mapreduce.Job: map 100% reduce 0%
15/10/28 01:07:42 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/input/segIn/segtest00:0+2314
15/10/28 01:07:42 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/10/28 01:07:42 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/10/28 01:07:42 INFO mapred.MapTask: soft limit at 83886080
15/10/28 01:07:42 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/10/28 01:07:42 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/10/28 01:07:42 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
联合早报网 讯 中国 外交部 证实 美国 军舰 今天 进入 南沙 群岛 渚 碧 礁 12 海里 航行 中 国 外交部 发言人 陆 慷 说 今天 美国 拉森 号 军舰 USS Lassen 未经 中国政府 允许 非法 进入 中国 南沙 群岛 有关 岛礁 邻近 海域 中国 有关 部门 对 美国 舰艇 实施 了 监视 跟踪 和 警告
陆 慷 表示 美方 军舰 有关 行为 威胁 中国 主权 和 安全 利益 危及 岛礁 人员 及 设施 安全 损害 地区 和平 稳定 中方 对 此 表示 强烈 不满 和 坚决 反对
陆 慷 说 正 如 中方 多次 强调 的 中国 对 南沙 群岛 及其 附近 海域 拥有 无可争辩 的 主权 中国 在 南海 的 主权 和 相关 权利 是 在 长期 的 历史 过程 中 形成 的 为 历代 中国政府 所 坚持 中方 在 自己 的 领土 上 开展 建设 是 主权 范围 内 的 事 不 针对 不 影响 任何 国家 不 会 对 各国 依 国际法 在 南海 享有 的 航行 和 飞越 自由 造成 任何 影响
他 强调 中方 强烈 敦促 美方 认真 对待 中方 严正 交涉 立即 纠正 错误 不得 采取 任何 威胁 中方 主权 和 安全 利益 的 危险 挑衅 行为 恪守 在 领土 主权 争议 问题 上 不 持 立场 的 承诺 以免 进一步 损害 中 美 关系 和 地区 和平 稳定
据 早 前 报道 中国 外交部长 王毅 今天 在 北京 出席 中 日 韩 研讨会 期间 针对 有 境外 媒体 问及 美军 将 派遣 军舰 进入 中国 南海 岛礁 12 海里 一 事 表示 关于 此事 中方 正在 核实 当中 如果 属实 奉劝 美方 三思而后行 不要 轻举妄动 不要 无事生非
据 报道 美国 国防部 周一 26日 宣布 将 于 24 小时 内 派遣 导弹 驱逐舰 到 中国 在 南海 人工岛 礁 12 海里 水域 的 范围 内 航行
路透社 报道 美军 将 派出 拉森 号 导弹 驱逐舰 前往 渚 碧 礁 及 美 济 礁 一带 水域 航行 并 会同 时 派出 P8A 侦察机 到 该 海域 巡逻 美国 国防部 发言人 表示 美军 的 行动 不 会 是 一次性 的 而 会 定期 进行 这次 行动 并非 针对 中国
美国 国防部 一 名 官员 之后 证实 美国 海军 派出 的 导弹 驱逐舰 拉森 号 周二 早上 驶 到 中国 在 南中国海 兴建 的 多 个 人工 岛礁 12 海 浬 范围 并 逗留 数 小时 美军 之后 表示 行动 已经 完成 拉森 号 离开 无 发生 任何 事故
联合早报网 编辑 沈茂华
15/10/28 01:07:51 INFO mapred.LocalJobRunner:
15/10/28 01:07:51 INFO mapred.MapTask: Starting flush of map output
15/10/28 01:07:51 INFO mapred.MapTask: Spilling map output
15/10/28 01:07:51 INFO mapred.MapTask: bufstart = 0; bufend = 2534; bufvoid = 104857600
15/10/28 01:07:51 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214364(104857456); length = 33/6553600
15/10/28 01:07:51 INFO mapred.MapTask: Finished spill 0
15/10/28 01:07:51 INFO mapred.Task: Task:attempt_local598241144_0001_m_000001_0 is done. And is in the process of committing
15/10/28 01:07:51 INFO mapred.LocalJobRunner: map
15/10/28 01:07:51 INFO mapred.Task: Task ‘attempt_local598241144_0001_m_000001_0‘ done.
15/10/28 01:07:51 INFO mapred.LocalJobRunner: Finishing task: attempt_local598241144_0001_m_000001_0
15/10/28 01:07:51 INFO mapred.LocalJobRunner: map task executor complete.
15/10/28 01:07:52 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/10/28 01:07:52 INFO mapred.LocalJobRunner: Starting task: attempt_local598241144_0001_r_000000_0
15/10/28 01:07:52 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ]
15/10/28 01:07:52 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@1f0dbfd
15/10/28 01:07:53 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=178821520, maxSingleShuffleLimit=44705380, mergeThreshold=118022208, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/10/28 01:07:53 INFO reduce.EventFetcher: attempt_local598241144_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/10/28 01:07:54 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local598241144_0001_m_000001_0 decomp: 2568 len: 2572 to MEMORY
15/10/28 01:07:54 INFO reduce.InMemoryMapOutput: Read 2568 bytes from map-output for attempt_local598241144_0001_m_000001_0
15/10/28 01:07:54 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 2568, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->2568
15/10/28 01:07:54 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local598241144_0001_m_000000_0 decomp: 2583 len: 2587 to MEMORY
15/10/28 01:07:54 INFO reduce.InMemoryMapOutput: Read 2583 bytes from map-output for attempt_local598241144_0001_m_000000_0
15/10/28 01:07:54 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 2583, inMemoryMapOutputs.size() -> 2, commitMemory -> 2568, usedMemory ->5151
15/10/28 01:07:54 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/10/28 01:07:54 INFO mapred.LocalJobRunner: 2 / 2 copied.
15/10/28 01:07:54 INFO reduce.MergeManagerImpl: finalMerge called with 2 in-memory map-outputs and 0 on-disk map-outputs
15/10/28 01:07:54 INFO mapred.Merger: Merging 2 sorted segments
15/10/28 01:07:54 INFO mapred.Merger: Down to the last merge-pass, with 2 segments left of total size: 5145 bytes
15/10/28 01:07:54 INFO reduce.MergeManagerImpl: Merged 2 segments, 5151 bytes to disk to satisfy reduce memory limit
15/10/28 01:07:54 INFO reduce.MergeManagerImpl: Merging 1 files, 5153 bytes from disk
15/10/28 01:07:54 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/10/28 01:07:54 INFO mapred.Merger: Merging 1 sorted segments
15/10/28 01:07:54 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 5146 bytes
15/10/28 01:07:55 INFO mapred.LocalJobRunner: 2 / 2 copied.
15/10/28 01:07:57 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/10/28 01:07:58 INFO mapred.LocalJobRunner: reduce > reduce
15/10/28 01:07:59 INFO mapreduce.Job: map 100% reduce 100%
15/10/28 01:08:01 INFO mapred.LocalJobRunner: reduce > reduce
15/10/28 01:08:05 INFO mapred.Task: Task:attempt_local598241144_0001_r_000000_0 is done. And is in the process of committing
15/10/28 01:08:05 INFO mapred.LocalJobRunner: reduce > reduce
15/10/28 01:08:05 INFO mapred.Task: Task attempt_local598241144_0001_r_000000_0 is allowed to commit now
15/10/28 01:08:05 INFO output.FileOutputCommitter: Saved output of task ‘attempt_local598241144_0001_r_000000_0‘ to hdfs://localhost:9000/output/segOut/_temporary/0/task_local598241144_0001_r_000000
15/10/28 01:08:05 INFO mapred.LocalJobRunner: reduce > reduce
15/10/28 01:08:05 INFO mapred.Task: Task ‘attempt_local598241144_0001_r_000000_0‘ done.
15/10/28 01:08:05 INFO mapred.LocalJobRunner: Finishing task: attempt_local598241144_0001_r_000000_0
15/10/28 01:08:05 INFO mapred.LocalJobRunner: reduce task executor complete.
15/10/28 01:08:07 INFO mapreduce.Job: Job job_local598241144_0001 completed successfully
15/10/28 01:08:07 INFO mapreduce.Job: Counters: 38
File System Counters
FILE: Number of bytes read=33097684
FILE: Number of bytes written=34155860
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=11705
HDFS: Number of bytes written=5059
HDFS: Number of read operations=28
HDFS: Number of large read operations=0
HDFS: Number of write operations=8
Map-Reduce Framework
Map input records=17
Map output records=17
Map output bytes=5086
Map output materialized bytes=5159
Input split bytes=216
Combine input records=0
Combine output records=0
Reduce input groups=1
Reduce shuffle bytes=5159
Reduce input records=17
Reduce output records=17
Spilled Records=34
Shuffled Maps =2
Failed Shuffles=0
Merged Map outputs=2
GC time elapsed (ms)=179
CPU time spent (ms)=0
Physical memory (bytes) snapshot=0
Virtual memory (bytes) snapshot=0
Total committed heap usage (bytes)=457125888
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=4673
File Output Format Counters
Bytes Written=5059
http://blog.csdn.net/luoyhang003/article/details/44586731
http://jingyan.baidu.com/article/9158e0004251b4a2541228e5.html
基于Hadoop2.6.0 + ICTCLAS2015的并行化中文分词
标签:
原文地址:http://www.cnblogs.com/merru/p/4917665.html