完成加载词库接口,和查询spark任务状态接口,销毁spark任务接口
加载词库接口执行流程:
1.springboot的接口提交加载词库任务并指定运行参数到spark集群,spark集群获取hdfs上事先上传好的词库分析项目jar包并运行指定main方法(注:程序中如果有第三方依赖,则打包时需要添加上)
2.加载词库程序中开始读取hdfs上输入法词库(一级/二级utf8_txt词库)生成SparkRDD,进行加载过滤,转换,追加分类值等操作,最终结果(词条,一级分类-二级分类+空格+一级分类_二级分类...的结构)
3.然后加载词库程序中使用httpClient调用自定义词库管理项目的获取自定义词库内容接口得到数据(词条,一级分类-二级分类的结构)并生成SparkRDD
4.合并输入法词库RDD和自定义词库RDD,进行合并,去重,转换,对于相同的词条,合并后则追加分类
5.最终加载词库的结果上传到hdfs上保存,以便后续用户数据分析使用.
备注:
加载词库程序耗时测试,申请10核cpu,20g内存使用5个节点,执行耗时70-80秒
重点:
spark任务提交方式由以前的sparksubmit client模式本地driver调用远程spark worker计算方式修改为调用spark提供的restful接口,使用cluster模式,远程driver启动,调用远程spark worker计算
sparksubmit client 调用模式可用于本地远程spark任务调试,输出语句打印在本地控制台(缺陷:本地需要安装spark环境,相当于本机也是一个节点,程序运行时作为driver端,申请spark计算和调度,接受worker端的计算结果)
sparkresful cluster调用模式可用于实际开发spark任务提交,输出语句打印在远程spark集群上某一台driver端(driver端由spark集群执行任务时自动分配) 本地不需要安装spark环境,任务可通过spark webUI进行监控打印输出