
大数据
九指码农
生活不止眼前的苟且。
展开
-
spark批量写入redis
最近工作中,在融合数据的时候,需要将10亿+的记录push到redis中,运维的同学帮忙搭建好redis集群,100主 + 100 从 (单节点8G),最开始打算第一次批量写入使用spark去写入到redis,因为数据存放在Hive表。一、相关依赖的jar包compile group: 'com.redislabs', name: 'spark-redis', version: '2.3.0'...原创 2019-11-26 10:13:23 · 3144 阅读 · 0 评论 -
spark streaming读取kafka 零丢失(四)
在移动互联网时代,处处都存在着实时处理或者流处理,目前比较常用的框架包括spark-streaming + kafka 等;由于spark-streaming读取kafka维护元数据的方式有1、通过checkpoint保存2、Direct DStream API 可以通过设置commit.offset.auto=true 设置自动提交3、自己手动维护,自己实现方法将消费到的DStream中的...原创 2019-09-29 19:44:09 · 428 阅读 · 5 评论 -
spark mllib CountVectorizer源码解析
CountVectorizer和CountVectorizerModel旨在通过计数来将一个文档转换为向量。当不存在先验字典时,Countvectorizer可作为Estimator来提取词汇,并生成一个CountVectorizerModel。该模型产生文档关于词语的稀疏表示,其表示可以传递给其他算法如LDA。 在fitting过程中,countvectorizer将根据语料库中的词频排序从高到...原创 2019-08-20 10:47:14 · 638 阅读 · 0 评论 -
spark mllib HashingTF解析
在处理文本数据,尤其是自然语言处理的场景中,hashingTF使用的比较多;Mllib使用hashing trick实现词频。元素的特征应用一个hash`函数映射到一个索引(即词),通过这个索引计算词频。这个方法避免计算全局的词-索引映射,因为全局的词-索引映射在大规模语料中花费较大。但是,它会出现哈希冲突,这是因为不同的元素特征可能得到相同的哈希值。为了减少碰撞冲突,我们可以增加目标特征的维...原创 2019-08-19 20:49:56 · 5445 阅读 · 0 评论 -
Hive统计每日新增及其二日和三十日回访比例
数据如下:一、求每日新增方法:每日新增即用户第一次访问,那么此时按照用户的id为key做分组,求他访问的最大时间和最小时间(天);如果最大时间等于最小时间,那么说明用户是第一次访问,否则不是;那么总的来说就是按照用户的最小时间统计即可select min_date,count(distinct user_id) as per_day_newfrom( select u...原创 2019-07-30 09:19:47 · 1834 阅读 · 0 评论 -
spark 排序实现原理 RangePartitioner
sprak Core中比较常用的排序方法sortBy和sortKByKey,这是一个shuffle类算法子,宽依赖,出发DAGSchedular划分Stage,那么他们排序的原理是啥呢?第一步Stage0:分区采样Sample,创建RangePartitioner,先对输入的数据的key做采样,来估算Key的分布,然后按照指定的排序切分range,尽量让每个partition对应的range里...原创 2019-07-17 18:23:38 · 1254 阅读 · 1 评论 -
spark core sortBy和sortByKey探索
感觉自己好久没有更新过博客了,本人最近有点儿迷失,特来写篇技术博客,以做自警不知道大家有没有注意到,大家在编写spark程序调用sortBy/sortByKey这两个算子的时候大家会不会有这样子的疑问,他们两个明明是transformation,为啥在执行的时候却触发了作业的执行呢?今天就和大家一起一探究竟? val wordCountRdd = spark.sparkContext.text...原创 2019-07-17 17:14:26 · 340 阅读 · 0 评论 -
文本自动摘要 -- textteaser
单文本摘要算法现在有很多 ,可以实现基于关键词的摘要方法,也有基于pagerank实现的textrank,也有textteaser 今天简单来介绍和实现textteaser摘要算法:统计指标:1)句子长度,长度为某个长度的句子为最理想的长度,依照距离这个长度的远近来打分。 2)句子位置,根据句子在全文中的位置,给出分数。(比如每段的第一句是核心句的比例大概是70%) 3)句子是否原创 2018-01-06 11:06:00 · 3632 阅读 · 0 评论 -
spark streaming 读取kafka 配置
使用SparkStreaming集成kafka时有几个比较重要的参数: (1)spark.streaming.stopGracefullyOnShutdown (true / false)默认fasle 确保在kill任务时,能够处理完最后一批数据,再关闭程序,不会发生强制kill导致数据处理中断,没处理完的数据丢失 (2)spark.streaming.backpressure.enable原创 2017-09-01 13:39:35 · 1432 阅读 · 0 评论 -
spark-sql like查询
当时遇到使用两个表,需要用到like的时候,建议使用map side join或者使用spark sql的broad cast joinsqlContext.sql( """ |select * from left A,right B where A.url like contact(B.url,'%') """.stripMargin) val importantBroad =原创 2017-08-27 14:53:47 · 8378 阅读 · 0 评论 -
spark-sql not in 优化
spark-sql支持not in val conf = new SparkConf().setAppName("spark_sql").setMaster("local[2]") val sc = SparkContext.getOrCreate(conf) val pathes = Array("","","") val sqlContext = new SQLCon原创 2017-08-27 14:23:33 · 3889 阅读 · 0 评论 -
java 获取kafka offsets(偏移量)
public KafkaInfoClient(){ init(); } public Map<Integer,Long> getEarliestOffset(String topic) { //kafka.api.OffsetRequest.EarliestTime() = -2 return getTopicOffset(topic,k转载 2017-08-27 14:08:05 · 10650 阅读 · 2 评论 -
spark streaming读取kafka 零丢失(三)
方式二: 方法二就是每次streaming 消费了kafka的数据后,将消费的kafka offsets更新到zookeeper。当你的程序挂掉或者升级的时候,就可以接着上次的读取,实现数据的令丢失和 at most once。而且使用checkpoint的方式可能会导致数据重复消费,spark streaming维护的offset和zookeeper维护的偏移量不同步导致数据丢失或者重复消费等。原创 2017-08-27 14:01:26 · 512 阅读 · 0 评论 -
spark streaming读取kafka数据令丢失(二)
方式二: 方法二就是每次streaming 消费了kafka的数据后,将消费的kafka offsets更新到zookeeper。当你的程序挂掉或者升级的时候,就可以接着上次的读取,实现数据的令丢失和 at most once。而且使用checkpoint的方式可能会导致数据重复消费,spark streaming维护的offset和zookeeper维护的偏移量不同步导致数据丢失或者重复消费等。原创 2017-08-27 13:58:28 · 1394 阅读 · 0 评论 -
spark-streaming 读取kafka数据不丢失(一)
spark streaming 读取kafka的时候,数据丢失是一个很大的问题,streaming 通过direct方式读取kafka,提供了checkpoint方式去自己维护读取kafka的offset,将数据放到hdfs。 方式: def main(args: Array[String]) { def func(): StreamingContext ={ val conf原创 2017-08-27 13:56:31 · 845 阅读 · 0 评论 -
spark-streaming 读取kafka的方式
Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以从代码中简单理解成Receiver方式是通过zookeeper来连接kafka队列,Direct方式是直接连接到kafka的节点上获取数据了。 一、基于Receiver的方式这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。recei原创 2017-08-27 13:19:48 · 417 阅读 · 0 评论 -
kafka各版本差异
kafka-0.8.2 新特性 producer不再区分同步(sync)和异步方式(async),所有的请求以异步方式发送,这样提升了客户端效率。producer请求会返回一个应答对象,包括偏移量或者错误信。这种异步方地批量的发送消息到kafka broker节点,因而可以减少server端资源的开销。新的producer和所有的服务器网络通信都是异步地,在ack=-1模式下需要等待所有的re原创 2017-08-04 15:42:41 · 4030 阅读 · 0 评论 -
kafka 安装配置
一、Zookeeper的安装与配置1.安装解压安装文件到zookeepertar -zxf zookeeper-3.4.10.tar.gz 重命名sudo mv zookeeper-3.4.10 /usr/local/ 2. 配置创建数据目录tmp/datamkdir -p /var/data/zookeeper/datasudo chmod 777 /var/data/zookeeper/原创 2017-07-25 10:35:40 · 404 阅读 · 0 评论 -
spark内存管理模块
Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和 Java 基础,了解 RDD、Shuffl转载 2017-05-05 13:05:38 · 737 阅读 · 0 评论 -
spark on yarn
1、spark-default export SPARK_LOCAL_DIRS=/home/hadoop/spark/tmp export SPARK_HOME=/usr/install/spark2、spark-env//This requires spark.shuffle.service.enabled to be set. The following //configurations a原创 2017-05-04 08:13:57 · 458 阅读 · 0 评论 -
hadoop安装配置
这个是很早之前写的一个配置文档了,最近总有人管我要,现在发出来,有些地方可能需要修改。仅供参考。 1.配置Hadoop环境变量 1.1展开hadoop安装包 在master解压主目录中的hadoop压缩包 sudo tar -zxf hadoop-2.6.5.tar.gz sudo mv hadoop-2.6.5 hadoop sudo chmod -R +x ~/hadoop 2.原创 2017-05-04 08:11:39 · 318 阅读 · 0 评论 -
alluxio安装配置
安装与配置 sudo tar -zxf alluxio-1.3.0-bin.tar.gz -C ~/ sudo mv alluxio-1.3.0 alluxio cd alluxio/conf sudo cp alluxio-env.sh.template alluxio-env.shsudo nano alluxio-env.sh 在文件尾部加上:export ALLUXIO_HOME原创 2017-05-04 08:05:11 · 1113 阅读 · 0 评论 -
spark-sql读取hive挂载alluxio
Alluxio是一个基于内存的分布式文件系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。Alluxio的前身为Tachyon 在大数据领域,最底层的是分布式文件系统,如Amazon S3、Apache HDFS等,而较高层的应用则是一些分布式计算框架,如Spark、MapReduce、Flink等,这些分布式框架原创 2017-05-04 07:59:07 · 1699 阅读 · 0 评论 -
spark/hadoop/hive/alluxio/sqoop/zookeeper 安装文档
一、关闭防火墙 临时关闭: sudo service iptables stop 永久关闭: sudo chkconfig iptables off 查看运行状态 sudo service iptables status 二、添加用户 useradd hadoop passwd hadoop 然后输入需要配置的密码 为新创建的用户添加root权限 在root用户下面,(su原创 2017-05-03 11:34:28 · 953 阅读 · 0 评论