Apache Spark

基于java的中文分词工具ANSJ

淺唱寂寞╮ 提交于 2021-02-18 16:00:13
ANSJ 这是一个基于n-Gram+CRF+HMM的中文分词的java实现. 分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上 目前实现了.中文分词. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能 可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目. 分词的目的是创建一个高稳定可用的中文分词工具,可以利用到各种需要文字处理的场景中下面简单介绍一下Ansj中文分词的主要算法及特点. 数据结构 高度优化Trie树 在用户自定义词典以及各种类似于Map的场景中,大量使用的一个工具,众所周知,Trie具有高速的文本扫描能力,和较低的内存占用率,是最好的AC机之一,弦外之音,在我的认知范围内,貌似没有之一.相比其它结构在性能和构造上做到了很好的平衡,但是在java中,大量构建map尤其是hashmap,是一个非常昂贵的操作,通过对于一个map放入大量的key也注定其在自动拆箱装箱,以及解决冲突,大量hash匹配上做了过多的小消耗,虽然多数人认为,这种消耗属于纳秒级别的,但是对于动不动就上GB的文本来说,这个消耗是不可忽略的,所以作者在这里使用了首字母hash次字二分的方式来避免过多的消耗内存,也正应为有了这个机制.可以保证Ansj加载更多的用户自定义词典,有人问我具体的数字.大约500万词,1Gde 内存

从简历筛选看怎么写一篇有亮点的简历

你离开我真会死。 提交于 2021-02-18 06:13:14
一、简历是怎么被筛选的?   今天公司简历太多,筛选不过来,我就帮忙筛选了一次。   我的筛选原则是:     (1)看年限:首先,看简历的工作年限     (2)看技能:根据工作年限,看工作技能有哪些,有哪些出彩的点,是否和工作年限相匹配     (3)看项目:根据工作技能,再看项目经验里他负责的地方有哪些我比较关注的技能点,在项目经验里有没有体现他说的工作技能     (4)分等级:在以上步骤完成后,确定出哪些是确定的,哪些是待定的     (5)再过滤:把待定的简历进行再次查看过滤,再去掉一些不太有感觉或者眼缘的,这就看个人感觉了 二、简历怎么写才好?   根据我的筛选原则,那么怎么写出来的简历能直接进入面试名单?   (1)文件命名:文件名的命名要清晰:【张三-java高级-4年工作经验】   (2)个人信息:简历第一部分就写,直观【名字、电话要显眼;年龄,学历,院校,工作经验,居住地很关键;籍贯、照片什么的可写可不写;】   (3)工作技能:       初级:一定要多写一些,写的具体详细一些,这样第一感觉好,同样的简历,写的详细的和一句话带过的,虽然技能一样,但是          简历多的时候,是很少有人愿意仔细思考你一句话带过里包含的隐藏信息的,太多了,没时间,而且写的多,第一感觉好       中高级:基础的可以概括总结,此处就要写你的装X技能了,多线程、高并发

Spark机器学习库(MLlib)指南

淺唱寂寞╮ 提交于 2021-02-16 23:12:55
机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库。机器学习具有可扩展性和易用性。 提供高级API ,它提供了以下工具: ML算法:常见的学习算法,如分类、回归、聚类和协同过滤 特征化:特征提取、变换、降维和选择 管道:用于构建、评估和调优ML管道的工具 持久性:保存和加载算法、模型和管道 实用程序:线性代数,统计学,数据处理等。 声明:基于DataFrame的API是主要API 基于MLlib RDD的API现在处于维护模式。 从Spark 2.0开始,在 spark.mllib 程序包已进入维护模式。Spark的主要机器学习API现在是 DataFrame -based API spark.ml 。 有什么影响 ? MLlib将支持基于RDD的API spark.mllib 以及错误修复。 MLlib不会为基于RDD的API添加新功能 。 在Spark 2.x版本中,MLlib将为基于DataFrames的API添加功能,以实现与基于RDD的API的功能奇偶校验。 在达到功能奇偶校验(粗略估计Spark 2.3)之后,将弃用基于RDD的API。 The RDD-based API is expected to be removed in Spark 3.0. 预计将在Spark 3.0中删除基于RDD的API。

hive安装部署

旧巷老猫 提交于 2021-02-16 20:43:45
1、 准备环境 1, 软件准备 Java-- jdk-8u121-linux-x64.tar.gz Hadoop--hadoop-2.7.4.tar.gz (jdk1.7会报错) Hive-- apache-hive-1.2.1-bin.tar.gz 本系列 教程所有 jar 包,请关注微信公众号 : Spark 高级玩法 ,输入 software 获取。 C entos 6.5 是本文采用的操作系统 2, 安装 mysql yum install mysql-server -y 启动 mysql service mysqld status service mysqld start 加上账户密码 mysqladmin -u root password '123456' 添加开机启动 chkconfig mysqld on chkconfig -- list | grep mysqld 测试 mysql - uroot - p123456 整理认证权限 名字叫mysql的数据库中假如需要的认证。 重点强调一定要执行: flush privileges; 二,安装Hive 1. 本地安装测试 配置好HIVE_HOME等环境变量 # Hive export HIVE_HOME=/opt/modules/hive-1.2.1 export HIVE_CONF_DIR=$HIVE_HOME

漫谈数据仓库之维度建模

我是研究僧i 提交于 2021-02-16 10:12:18
0x00 前言 下面的内容,是笔者在学习和工作中的一些总结,其中概念性的内容大多来自书中,实践性的内容大多来自自己的工作和个人理解。由于资历尚浅,难免会有很多错误,望批评指正! 概述 数据仓库包含的内容很多,它可以包括架构、建模和方法论。对应到具体工作中的话,它可以包含下面的这些内容: 以Hadoop、Spark、Hive等组建为中心的数据架构体系。 各种数据建模方法,如维度建模。 调度系统、元数据系统、ETL系统、可视化系统这类辅助系统。 我们暂且不管数据仓库的范围到底有多大,在数据仓库体系中,数据模型的核心地位是不可替代的。为什么要数据仓库建模? 数据模型是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。有了适合业务和基础数据存储环境的模型,那么大数据就能获得以下好处: 性能 :良好的数据模型能帮助我们快速查询所需要的数据,减少数据的 I/O 吞吐。 成本 :良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大的降低大数据系统中的存储和计算成本。 效率 :良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。 质量 :良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。 因此,下面的将详细地阐述数据建模中的典型代表:维度建模,对它的的相关理论以及实际使用做深入的分析。 文章结构 本文将按照下面的顺序进行阐述:

程序员能纯靠技术渡过中年危机吗?

谁都会走 提交于 2021-02-15 06:52:34
震惊!小编今年也29了 今天刷脉脉,有个程序员写道:“今年29了,距离三十岁不到一年,最近经常听到中年危机这个词,难道程序员不能纯靠技术度过中年危机吗?” 一个女程序员前来凑热闹,暴击 今年25,因为是女孩子,做开发,已经感受到了强烈的中年危机 感觉学习的速度永远跟不上技术的发展,看着同龄的其他行业朋友还处于刚刚毕业没几年的职场新人的样子,不禁感叹开发这个职业,经验年限远不如学习能力和创新能力。 但是既然入了这一行,为了不被淘汰,只有不断跳出舒适区,比别人付出更多更多的努力,变得更加优秀才行呢! 其实挺害怕被淘汰的,只能一直这样鼓励自己啦! 啊,当然话是这么说,偶尔也会想什么都不干就静静地躺尸呢(叹气) ——蚂蚁金服高级开发工程师( 女程序员 ) 搞点大厂的大佬评论,大家一起学习一下 --阿里巴巴技术专家 赵某 发言💬 这么说吧,35岁你的技术沉淀比25岁的多多少,你深度很够,但是90%的公司不需要你这么深的技术。 25的要15k就能干活,还能没日没夜的加班,请问你35了想要多少钱,能加班到几点。 当然,10%的职位还是需要资深技术的,只能努力,挤破头进到这10%的职位。 加油… 咪咕实习生(女大佬比较少,挑个实习生) 李女士 发言💬 20岁拼学历,30岁拼经历/阅历,40岁拼人脉。 人到中年的时候,不仅想象力/创造力/学习能力都在下降,更无法和年轻人比勤奋,所以这个问题无关行业

spark性能测试理论-Benchmark(转)

本小妞迷上赌 提交于 2021-02-15 01:56:33
一、Benchmark简介 Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, tests were developed that allowed comparison of different architectures.”Benchmark在计算机领域应用最成功的就是性能测试,主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。 性能调优的两大利器是Benchmark和profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而profile工具最大限度地呈现系统的运行状态和性能指标,方便用户诊断性能问题和进行调优。 二、Benchmark的组成 Benchmark的核心由3部分组成:数据集、 工作负载、度量指标。 1、数据集 数据类型分为结构化数据、半结构化数据和非结构化数据。由于大数据环境下的数据类型复杂,负载多样,所以大数据Benchmark需要生成3种类型的数据和对应负载。 1

spark streaming checkpoint

て烟熏妆下的殇ゞ 提交于 2021-02-14 21:33:38
一个 Streaming Application 往往需要7*24不间断的跑,所以需要有抵御意外的能力(比如机器或者系统挂掉,JVM crash等)。为了让这成为可能,Spark Streaming需要 checkpoint 足够多信息至一个具有容错设计的存储系统才能让 Application 从失败中恢复。Spark Streaming 会 checkpoint 两种类型的数据。 Metadata(元数据) checkpointing - 保存定义了 Streaming 计算逻辑至类似 HDFS 的支持容错的存储系统。用来恢复 driver,元数据包括: 配置 - 用于创建该 streaming application 的所有配置 DStream 操作 - DStream 一些列的操作 未完成的 batches - 那些提交了 job 但尚未执行或未完成的 batches Data checkpointing - 保存已生成的RDDs至可靠的存储。这在某些 stateful 转换中是需要的,在这种转换中,生成 RDD 需要依赖前面的 batches,会导致依赖链随着时间而变长。为了避免这种没有尽头的变长,要定期将中间生成的 RDDs 保存到可靠存储来切断依赖链 总之,metadata checkpointing 主要用来恢复 driver;而 RDD数据的

Spark的checkpoint源码讲解

荒凉一梦 提交于 2021-02-14 21:02:41
一、Checkpoint相关源码分为四个部分 1、Checkpoint的基本使用:spark_core & spark_streaming 2、初始化的源码 3、Checkpoint的job生成及执行的过程 4、读Checkpoint的过程 二、Checkpoint的基本使用 Checkpoint可以是还原药水。辅助Spark应用从故障中恢复。SparkStreaming宕机恢复,适合调度器有自动重试功能的。 对于 SparkCore 则适合那些计算链条超级长或者计算耗时的 关键点进行 Checkpoint , 便于故障恢复 。 Checkpoint和persist从根本上是不一样的:   1、Cache or persist:     Cache or persist保存了RDD的血统关系,假如有部分cache的数据丢失可以根据血缘关系重新生成。   2、Checkpoint     会将RDD数据写到hdfs这种安全的文件系统里面,并且抛弃了RDD血缘关系的记录。即使persist存储到了磁盘里面,在driver停掉之后会被删除,而checkpoint可以被下次启动使用。 Checkpoint基本使用   对于spark_streaming的checkpoint:      spark streaming有一个单独的线程CheckpointWriteHandler

spark小文件合并

点点圈 提交于 2021-02-14 08:58:09
package spark99 import java.io.IOException import org.apache.hadoop.fs.{FileSystem, Path} import org.apache.log4j.Logger import org.apache.spark.sql.hive.HiveContext import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.{SQLContext, SaveMode} /** * Created by hadoop on 下午11:54. */ object FilesManage { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[2]").setAppName("mergefile") val sc = new SparkContext(sparkConf) val sqlContext = new HiveContext(sc) val logger = Logger.getLogger("org") val fileSystem = FileSystem.get(sc