
spark及问题解决
九指码农
生活不止眼前的苟且。
展开
-
spark-streaming使用spark-ML模型实时预测
不得不说Spark是一款优秀的计算引擎,继承Spark-ML、Spark-Graphx机器学习和图计算框架,Spark-ML一般用于离线分析和挖掘,生成模型。如果我们把模型保存在HDFS,需要在实时计算里面使用提前训练好的模型,解决方案如下:1、通过转换序列化方式,把模型转换成可以被其他语言调用的方式,如:java、python2、在spark-streaming中使用具体读取kafak的配置信息和保证EOS的不在这里体现,主要体现如何使用Spark-ML训练好的模型,具体代码如下:val sp原创 2020-05-26 17:59:40 · 1954 阅读 · 1 评论 -
Spark-SQL处理小文件问题
一、小文件产生的原因1、在使用spark sql处理数据的过程中,如果有shuffle产生,依赖于spark.sql.shuffle.partitions配置信息,默认为200,当处理的数据量比较大时,通常会把该值调大,以避免单个分区处理的数据太大出现异常或者拖慢整个任务的执行时间。2、如果没有shuffle产生,文件的数量依赖于数据源的文件数量以及文件是否可切分等特性决定任务的并发度即tas...原创 2020-04-03 23:14:57 · 3699 阅读 · 2 评论 -
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 mongodb 踩坑 Caused by: java.io.InvalidClassException: com.mongodb.spark.rdd.MongoRDD
本人在工作中用到了部分spark-mongodb的整合,今天在测试环境测试的时候,提交任务到yarn出现问题,具体描述如:根据错误提示,搜索了很久,说class 序列号问题经过仔细排查后,发现,分析:client端类版本与server端不一致;线上环境的jar的版本和本次打jar包的环境的版本不一致导致的compile group: 'org.mongodb.spark', name: '...原创 2019-07-19 13:55:23 · 748 阅读 · 0 评论 -
spark sql 自适应 Adaptive Execution
一、Spark 目前现有的一些问题问题一:Shuffle partition数量没有达到最优在Spark SQL中,我们可以通过spark.sql.shuffle.partition来设置shuffle后的partition数量,默认值是200。shuffle partition的数量等同于下一Stage的Reduce Task的数量。因为shuffle的原因,这些Task处理的数据量残差不齐...转载 2019-07-17 21:43:23 · 573 阅读 · 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 评论 -
spark streaming 应用程序 监控 邮件提醒
spark streaming应用程序,放到线上后,怎么监测spark streaming程序的阻塞状态, 虽然spark 提供了spark webUI去查看,但是作为开发人员总不能天天去看spark webUI页面吧, 去官网看,貌似可以通过请求spark 自带的jetty 服务器可以获取相关检测统计信息,http://host:8088/proxy/application_1517...原创 2018-03-05 15:15:31 · 3818 阅读 · 0 评论 -
spark 问题
spark on yarn 问题spark通过yarn提交任务,任务没跑就停止了,8088页面显示成功,点击history显示Shutdown hook called before final status was reported.查看了很久才发现,数据对接的数据格式改变了,我程序中有if(StringUtils.isBlank(difference)){ Sys原创 2018-01-31 15:38:30 · 2187 阅读 · 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 java.lang.OutOfMemory, unable to create new native thread
如果出现如下错误: java.lang.OutOfMemory, unable to create new native thread Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.原创 2017-06-22 14:11:31 · 1264 阅读 · 0 评论 -
spark内存管理模块
Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和 Java 基础,了解 RDD、Shuffl转载 2017-05-05 13:05:38 · 737 阅读 · 0 评论 -
spark-sql读取hive挂载alluxio
Alluxio是一个基于内存的分布式文件系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。Alluxio的前身为Tachyon 在大数据领域,最底层的是分布式文件系统,如Amazon S3、Apache HDFS等,而较高层的应用则是一些分布式计算框架,如Spark、MapReduce、Flink等,这些分布式框架原创 2017-05-04 07:59:07 · 1699 阅读 · 0 评论 -
Spark Shuffle FetchFailedException解决方案
在大规模数据处理中,这是个比较常见的错误。当有大量的shuffle的时候,可能是因为网络传输或者磁盘IO引起的这个错误。 往往伴随的还有某个节点heart-timeout或者exectuor丢失. 报错提示 SparkSQL shuffle操作带 `org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output原创 2016-12-13 23:45:40 · 1415 阅读 · 0 评论 -
spark好友推荐
好友推荐:有好多推荐方式,比如根据兴趣爱好去推荐,根据朋友的盆友去推荐等等,这里不再赘述,这个比较经典的问题,大家肯定都知道吧,或许很多人指导用hadoop怎么去实现,这个问题如果用hadoop去实现,得用至少两次mapreduce去实现吧,这里先不去说明hadoop怎么去实现的,先看看数据,然后用spark去实现。 小明 老王 如花 林志玲 老王 小明 凤姐 如花 小明 李刚原创 2016-10-30 01:31:17 · 1080 阅读 · 0 评论 -
spark flatmap
之前在某个spark技术交流群里面,曾经有人问过我一个问题,那就是怎么将RDD[(String,ArrayBuffer[String])]转换为RDD[(String,String)]类型,我当时就告诉完了怎么转换的方法即用flatmap实现,但是,现在我遇到了同样的问题,怎么都想不起来当时是怎么写的了,也找不到那段代码了,我就用了一个比较守旧的方法实现的res是RDD[(String,ArrayB原创 2016-10-29 16:43:24 · 766 阅读 · 0 评论 -
spark reparation和coalesce
repartition(numPartitions:Int):RDD[T]和coalesce(numPartitions:Int,shuffle:Boolean=false):RDD[T] 他们两个都是RDD的分区进行重新划分,repartition只是coalesce接口中shuffle为true的简易实现,(假设RDD有N个分区,需要重新划分成M个分区) 1、N小于M 一般情况下N个分区有原创 2016-10-20 13:21:45 · 2231 阅读 · 0 评论 -
spark找共同朋友的问题
数据格式如下: “A ,B ,C, D, E, F”, “B ,A ,C ,D ,E”, “C,A,B,E”, “D,A,B,E”, “E,A,B,C,D”, “F,A” 第一字母表示本人,其他是他的朋友,找出有共同朋友的人,和共同朋友是谁 直接上代码:val rdd = sc.makeRDD( Array( "A ,B ,C原创 2016-10-20 11:34:29 · 929 阅读 · 0 评论 -
spark二次排序
二次排序概念: 首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果 。 废话不多说,直接上代码: val rdd = sc.makeRDD( Array( (20, 21), ( 50, 51), ( 50 ,52), ( 50, 53), (50, 54), (60, 51), (60, 53), ( 60, 52), (6原创 2016-10-19 18:25:34 · 454 阅读 · 0 评论 -
sparkVSmapreduce多线程与多进程
Apache Spark的高性能一定程度上取决于它采用的异步并发模型(这里指server/driver端采用的模型),这与Hadoop 2.0(包括YARN和MapReduce)是一致的。Hadoop 2.0自己实现了类似Actor的异步并发模型,实现方式是epoll+状态机,而Apache Spark则直接采用了开源软件Akka,该软件实现了Actor模型,性能非常高。尽管二者在server端采用原创 2016-08-15 22:19:46 · 706 阅读 · 0 评论 -
spark导入elasticsearch
前面简单的介绍了elasticsearch。现在开始使用,当我们面对海量数据的时候,如果想把数据导入到es,肯定不能想以前那样单条导入,我使用的是spark导入到es的批量导入。第三方依赖包:这里写链接内容 可以到这里下载相应的依赖包解压使用。PS:在使用的时候一定要记得spark和scala以及es的对应关系,我使用的是spark1.6.2 ,scala使用的是2.10.4,在使用的时spark原创 2016-08-15 11:36:24 · 6152 阅读 · 0 评论 -
好友推荐算法-基于关系的推荐
最近在搞社交网络的算法,前面简单叙述了pagerank的相关以及graphx的实现,现在简单介绍好友推荐算法,每当我们在QQ的添加好友等的时候,下面总会出现腾讯推荐给我们的好友,你会发现推荐的好友大多都是你某个好友的好友(即二度好友),而且其中还有一些比较详细的规则,下面简单介绍: 一、六度分割理论: 1967年,美国哈佛大学的心理学教授Stanley Milgram(1933-1984)想要描转载 2016-08-13 09:09:18 · 14597 阅读 · 0 评论 -
spark-graphx pagerank
在工作中,在图进行初始化的时候,需要根据边的权重去计算每个点再迭代过程中获得到的能量值。 下面呈现出简单实现: val rdd = sc.textFile("hdfs://master:9000/graph").map( line =>{ val pair = line.split("\\s+") (pair(0).toLong,(pair(1).toLong,pai原创 2016-08-08 22:27:19 · 820 阅读 · 0 评论 -
spark-rdd 实现简易pagerank
突然有一天老大告诉我说,咱们搞一下pagerank吧,我当时就感觉很无力,然后开始查看相关的论文和资料,前面博客有相关介绍。然后开始查看graphx部分的源码,还有包括现在已经废弃不用的bagel的实现,结合上面的几种实现,用rdd实现简易pagerank。代码如下: val rdd = sc.textFile(“hdfs://master:9000/pagerank”).map( line =>原创 2016-08-08 21:56:34 · 720 阅读 · 0 评论 -
spark-graphx之pagerank
spark-graphx实现的pagerank源代码分为两个: spark-1.6.\graphx\src\main\scala\org\apache\spark\graphx\Pregel.scala有一个还有一个在spark-1.6.\graphx\src\main\scala\org\apache\spark\graphx\lib\PageRank.scala中该PageRank模型提供了两原创 2016-08-08 21:46:56 · 1962 阅读 · 0 评论 -
pageRank入门
PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。从入链数量到 PageRank 在PageRank提出之前,已经有研究者提出利用网页的入链数量来进行链接分析计算,这种入链方法假设一个网页的入链越多,则该网页越重要。早期的很多搜索引擎也采纳了入链数量作为链接分析方法,对于搜索引擎效果提升也有较明显的效果。 PageRank除了考虑到入链数量的原创 2016-08-08 20:56:22 · 532 阅读 · 0 评论 -
spark-mysql中文过滤问题
在从mysql中读取数据(包含字段值问中文) 例如当使用使用select id from test where name =’杨’的时候出现了错误,结果为零object sparksql { def main(args: Array[String]) { val sc = new SparkContext( new SparkConf().setAppName(“sparksql”原创 2016-05-26 22:26:31 · 1365 阅读 · 0 评论 -
spark性能优化:shuffle调优
本文转载自:http://blog.youkuaiyun.com/lw_ghy/article/details/514197601、 shuffle基本概念与常见实现方式:shuffle,是一个算子,表达的是多对多的依赖关系(宽依赖),在类MapReduce计算框架中,是连接Map阶段和Reduce阶段的纽带,即每个Reduce Task从每个Map Task产生数的据中读取一片数据,极限情况下可能触发M*R个原创 2016-05-17 20:44:33 · 1260 阅读 · 0 评论 -
spark性能优化:数据倾斜调优
转载自:http://blog.youkuaiyun.com/lw_ghy/article/details/51419877 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。 数据倾斜发生时的现象 1、绝大多数task执行得都非常快,但个别ta转载 2016-05-17 17:55:25 · 2844 阅读 · 1 评论 -
spark性能调优:资源优化
本文转载自:http://blog.youkuaiyun.com/lw_ghy/article/details/51419977没有最好的资源配置,只有最合适的参数设置和资源分配。在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至转载 2016-05-17 17:11:28 · 544 阅读 · 0 评论 -
spark性能调优:开发调优
原则一:避免创建重复的RDD 通常来说,我们在开发一个Spark作业时,首先是基于某个数据源(比如Hive表或HDFS文件)创建一个初始的RDD;接着对这个RDD执行某个算子操作,然后得到下一个RDD;以此类推,循环往复,直到计算出最终我们需要的结果。在这个过程中,多个RDD会通过不同的算子操作(比如map、reduce等)串起来,这个“RDD串”,就是RDD lineage,也就是“RDD的转载 2016-05-17 17:09:19 · 792 阅读 · 0 评论 -
spark Task序列化问题
1、问题描述及原因分析 在编写Spark程序中,由于在map,foreachPartition等算子内部使用了外部定义的变量和函数,从而引发Task未序列化问题。然而,Spark算子在计算过程中使用外部变量在许多情形下确实在所难免,比如在filter算子根据外部指定的条件进行过滤,map根据相应的配置进行变换等。为了解决上述Task未序列化问题,这里对其进行了研究和总结。出现“org.apache转载 2016-05-16 18:45:46 · 3749 阅读 · 0 评论 -
基于SPARK SQL 读写ORACLE 的简单案例分析常见问题
该文章出自上海harli,偷偷地把女神的东西拿出来,希望女神不要介意。 一、概述本文主要内容包含Spark SQL读写Oracle表数据的简单案例,并针对案例中比较常见的几个问题给出解决方法。最后从常见的java.lang.ClassNotFoundException(无法找到驱动类)的异常问题出发,分析相关的几种解决方法,以及各个解决方法之间的异同点。二、案例中比较常见问题及其解决方法2.1翻译 2016-05-05 16:14:09 · 5810 阅读 · 1 评论 -
spark读取oracle的
刚开始使用spark-sql,首先看了一部分的源码。然后开始着手程序的编写。 在spark中使用jdbc: 在 Spark-env.sh 文件中加入: export SPARK_CLASSPATH=/path/mysql-connector-java-5.1.34.jar 任务提交时加入: spark-submit –master spark://master:7077 –jars ojd原创 2016-05-05 15:55:18 · 11674 阅读 · 1 评论