
spark
mn_kw
喜欢研究大数据组件技术,深入内核,后续会更新工作级别的解决方案
展开
-
spark使用到别的jar包
第一种方式操作:将第三方jar文件打包到最终形成的spark应用程序jar文件中应用场景:第三方jar文件比较小,应用的地方比较少第二种方式操作:使用spark-submit提交命令的参数: --jars要求:1、使用spark-submit命令的机器上存在对应的jar文件2、至于集群中其他机器上的服务需要该jar文件的时候,通过driver提供的一个http接口来获取...原创 2019-04-18 16:32:33 · 490 阅读 · 0 评论 -
StreamingContext注意事项
我们的StreamingContext一旦启动不能停止,停止将不能再使用,后边也不能再重新调用start启动,想要暂时停止的话使用sc.stop(false)这个就是不停止StreamingContext,但是把实时流先停下来...原创 2018-08-10 11:13:00 · 1563 阅读 · 0 评论 -
将mysql中查询出来的数据转换为rdd怎么做
首先建立一个List<Tuple2<Long,Boolean>> tuples然后将查询出来的数据放到List中,然后用sc.parallelizePairs(tuples);转化成我们的rdd原创 2018-08-03 11:24:16 · 1462 阅读 · 1 评论 -
spark transformation和action操作
spark中的transformation是lazy特性的,比如我们的wordCount操作,在促发action(foreach)操作前,我们前边的算子是不会实际操作执行的,整个这一块,都是在Driver节点上执行,也就是执行我们自己编写的spark应用程序,但是呢,在action执行之前,所有的transformation都是lazy的,不会立即执行,只有执行的action后,才会促发job,提...原创 2018-08-16 09:17:21 · 309 阅读 · 0 评论 -
task深度剖析
Executor接收到了LaunchTask的请求(TaskRunner运行)会做一些准备操作,比如说,反序列话Task(发送过来的时候是序列话的),然后通过网络拉取需要的文件,jar包等 然后运行我们task的run()方法 内部,最核心的就是调用RDD的iterator()方法,在这里,就会针对task所对应的rdd的partition执行我们的自定义的function(算...原创 2018-08-16 17:04:14 · 144 阅读 · 0 评论 -
spark提交模式的具体配置
local模式,其实仅仅用于ide的测试standalone模式 client模式spark-submit: --master spark://IP:Port--deploy-mode clientcluster模式spark-submit: --master spark://IP:port--deploy-mode cluster在cluster模式下,我们的wo...原创 2018-08-22 10:51:03 · 242 阅读 · 0 评论 -
standalone作业监控
spark web ui1. 哪些作业在跑2. 哪些作业跑完了 ,花费了多少时间和资源3. 哪些作业失败了application web uiapplication detail ui,其实就是作业driver所在机器的4040端口可以看到job/、stage/、task的详细信息,shuffle read、shuffle writer、gc、运行时间,每个task分配的数...原创 2018-08-22 11:13:35 · 223 阅读 · 0 评论 -
DataFrame,将RDD转换成DataFrame
DataFrame相对于一张表第一步创建一个普通的RDD,但是必须将其转换为RDD<Row>的这种格式JavaRDD<Row> rows = lines.map(new Function<String, Row>() { public Row call(String s) throws Exception { return Ro...原创 2018-08-17 16:03:47 · 310 阅读 · 0 评论 -
SparkSQL内置函数
统计每日uv和销售额这里使用内置函数 countDistinct//每天都有很多用户来访问,但是每个用户可能每天会访问很多次//所以uv,指的是,对用户进行去重以后的访问次数(去重统计总数)//首先,对DataFrame调用groupBy()方法,对某一列进行分组//然后调用agg()方法,第一个参数,必须必须必须传入之前在groupBy()方法中出现的字段//第二个参数,传入co...原创 2018-08-20 10:54:41 · 555 阅读 · 0 评论 -
Streaming性能调优
放到原创 2018-08-10 10:23:13 · 279 阅读 · 0 评论 -
数据处理原理剖析(block与batch关系透彻解析)
每隔我们设置的batch interve的time,就去找ReceverTracker,将其中的,从上次划分的batch的时间,到目前为止的这个batch interval time间隔的block,给封装成为一个batch.其次,就会将这个batch中的数据,去创建一个初始化RDD,这个RDD中有几个partition呢?这是batch和block之间的关系的微妙之处,事实上,是这样的,一个...原创 2018-08-10 09:44:05 · 999 阅读 · 0 评论 -
数据倾斜解决方案之reduce join转换成为map join
reduce join转换为map join适合在什么样的情况下,可以来使用?如果俩个RDD要进行join,其中一个RDD是比较小的,一个RDD是1百万数据,一个RDD是1万数据注意,其中一个RDD必须是比较小的,broadcast出去的那个小RDD的数据以后,就会在每个executor的block manager中都驻留一份,要确保你的内存足够存放那个小rdd中的数据 不适合的情...原创 2018-07-21 10:40:52 · 636 阅读 · 0 评论 -
数据倾斜之sample采样倾斜key进行俩次join
ds原创 2018-07-21 11:05:41 · 449 阅读 · 0 评论 -
SparkSQL开窗函数
row_number()开窗函数其实就是给每个分组的数据,按照其排序的顺序,打上一个分组内的行号比如说,有一个分组date = 20151001,里面有三条数据,1122,1121,1124,那么对这个分组的每一行使用row_number()开窗函数以后,三行,依次会获得组内的行号行号从1开始递增,比如1122 1,1121 2,1123 3 row_number()...原创 2018-07-30 10:22:40 · 3185 阅读 · 1 评论 -
spark集群管理器
spark集群管理器,目前来说,支持的有spark standalone Yarn Messos,但是目前国内常用的也只有是Spark StandAlone和YarnSparkContext,会跟集群管理器去申请资源,申请启动一些executor进程集群管理器主要就负责在各个节点上,给spark作业启动一批executor进程 driver会将我们的工程jar发送到所有的execu...原创 2018-07-22 21:38:02 · 488 阅读 · 0 评论 -
standalone集群架构
集群管理器,cluster manager:Master 进程工作节点:Worker进程spark,Master+Worker集群架构就足够了,然后可以编写spark作业,提交到Master+Worker集群架构中运行一般大公司,Hadoop、spark、storm、Hive、MapReduce都用到了,统一就不搭建spark集群了,(Master+Worker压根就没有) Y...原创 2018-07-23 09:49:23 · 671 阅读 · 0 评论 -
UDF自定义函数
UDF:User Defined Function 用户自定义函数原创 2018-07-30 22:48:03 · 1308 阅读 · 0 评论 -
Receiver获取数据原理
1. BlockIntervalTimer,会每隔一段时间(默认是200ms),将接收到的数据,打包成一个block(后面的batch是用block聚合成的)2. 每一个block,都会通过BlockManager保存一份,然后还会发送一份blockId,blockInfo,到receiverTracker上,根据time时间来存储 (HashMap)...原创 2018-08-10 09:42:29 · 333 阅读 · 0 评论 -
spark submit给main类传递参数
如果想要给main类传递参数需要在submit脚本最后一行${1}${2}即可原创 2018-08-23 09:11:23 · 6041 阅读 · 0 评论 -
spark实现分组去topN
在sparkSQL中row_number开窗函数原创 2018-08-20 13:34:35 · 615 阅读 · 0 评论 -
spark Streaming中的容错机制
Spark操作通常是容错文件系统中的数据,比如HDFS.因此,所有通过容错数据生成的RDD也是容错的,然而,对于Spark Streaming来说,这却是行不通的,因为在大多数情况下,数据都是通过网络接收的,要让Spark Streaming程序中,所有生成的RDd,都达到与普通Spark程序的RDD相同的容错性,接收到的数据必须被复制到多个Worker节点的Executor内存中,默认复制因子是...原创 2018-08-21 13:20:37 · 1121 阅读 · 0 评论 -
运行spark作业,hdfs文件越来越大问题解决
我们在运行spark作业的时候,发现hdfs中的数据越来越多,经查看是我们spark-history文件目录下的东西,这个时候就是我们在配置的时候,没有配置spark-history文件过段时间自动删除,我们应该在spark-default.conf中加入以下参数spark.history.fs.cleaner.enabled 默认为false 这个参数指定history-s...原创 2018-08-24 14:26:37 · 2079 阅读 · 0 评论 -
sparkStreaming内核剖析
Receiver从kafka中接收的数据都是一条一条的数据,那么接下来,会将这一条一条的数据存储到currnetBuffer(ArrayBuffer),这时有一个线程(BlockIntervalTimer)(每隔一段时间(可配置)将currentBuffer中所有数据打包,封装为一个block),然后将打包好的block推入到一个队列中,这个队列中就是一个一个的block,然后有一个blockPu...原创 2018-08-21 15:56:18 · 304 阅读 · 0 评论 -
优雅关闭spark程序
https://blog.youkuaiyun.com/shuai_fan/article/details/86542304转载 2019-04-04 09:55:51 · 2524 阅读 · 1 评论 -
sparkstreaming对接kafka出现的数据积压问题
kafka数据积压问题1. 问题描述生产环境开发了一套sparkstreaming对接kafka,并进行数据处理的程序。刚开始程序运行的很好,kafka集群被人动过之后,重启spark程序时出现如下报警信息:18/06/20 15:29:21 WARN kafka010.KafkaUtils: overriding enable.auto.commit to false for exec...转载 2019-04-18 09:13:33 · 3028 阅读 · 5 评论 -
sparkStreaming 报缺scala包的问题
我们需要将这俩个scala版本一致原创 2019-04-18 13:32:44 · 291 阅读 · 0 评论 -
spark自身保持偏移量
http://spark.apache.org/docs/2.2.0/streaming-kafka-0-10-integration.html#kafka-itself原创 2019-04-18 15:33:27 · 390 阅读 · 0 评论 -
打成jar包如何读取外部的properties文件
方式一:这是最常见的读取配置文件方式 1 2 3 valpostgprop=newProperties() valipstream:InputStream=this.getClass().getResourceAsStream("/config.properties") postgprop.load(ipstr...转载 2019-04-18 16:22:32 · 6004 阅读 · 0 评论 -
最近一个小时top3热门商品实时统计
首先用sparkStreaming将数据转换(window操作)(每个一段时间统计最近一个小时的操作)使用sparkSQL(row_number开窗函数)来进行分组top3热门商品统计我们的开窗函数最好用hiveContext来创建,不要用SQLContext来创建...原创 2018-08-21 11:14:33 · 1515 阅读 · 0 评论 -
SparkStream output操作
DStream中的所有计算,都是由output操作触发的,比如print(),如果没有任何output操作,那么,压根就不会执行定义的计算逻辑 此外,即使你使用了foreachRDD output操作,也必须在离路面对RDD执行action操作,才能触发对每一个batch的计算逻辑,否则,光有foreachRDD output操作,在里面没有对RDD执行action操作,也不会有任何逻辑被...原创 2018-08-21 10:41:08 · 442 阅读 · 0 评论 -
SparkStreaming DStream
DStream就是离散流,它代表了一个持续不断的数据流,DStream的内部,其实是一系列不断产生的RDD,RDD是Spark Core的核心抽象,DStream中的每个RDD都包含了一个时间段内的数据 对DStream应用的算子,比如map,其实在底层都会被翻译为对DStream中每个RDD的操作,比如对一个DStream执行一个map操作,会产生一个新的DStream,但是在底层,其实...原创 2018-08-20 14:00:51 · 437 阅读 · 0 评论 -
spark闭包原理
spark中非常难以理解的概念,就是在集群分布式并行运行时操作算子外部的变量生命周期 所谓RDD算子中,操作作用域外部的变量,指的是,类似下面的语句:val a = 0 ; rdd.foreach(i -> a +=1)此时,对rdd执行foreach算子的作用阈,其实仅仅是它内部代码,但是这里却操作了作用阈外部的变量a,这种现象就是闭包 闭包简单来说,就是i操作一个不属...原创 2018-08-23 09:55:06 · 422 阅读 · 0 评论 -
二次排序以及获取top10
可以将我们需要二次排序的key封装成一个java对象,将key作为对象中的属性将java对象做成可序列化的,然后有排功能,实现我们的ordered接口 然后这样调用我们的算子sort操作,进行排序,take(10)取top10...原创 2018-08-23 11:01:32 · 561 阅读 · 0 评论 -
sparkStreaming Recever注意事项
我们的SparkStreaming Receiver是独占一个cpu core的,所以我们集群中如果只有一个cpu core的话,那么就不能正常的运行了,因为没有额外的cpu core来计算这些算子所以sparkStreaming 最少有一个cpu core来进行数据接收,一个cpu core来进行数据处理(RDD处理)...原创 2018-08-20 14:55:17 · 261 阅读 · 0 评论 -
transformation 深度剖析
union算子1. 新的rdd,会将就得俩个rdd的partition,原封不动的给挪过来2. 新的rdd的partition的数量,就是旧的俩个rdd的partition的数量的总和 groupbyKey算子一般来说,在执行shuffle类的算子的时候比如groupByKey,reduceBykey,join等其实在算子内部都会创建几个RDD出来,那些隐士创建的RDD,主...原创 2018-08-23 11:23:03 · 219 阅读 · 0 评论 -
sparkStream基于kafka源连接
基于Direct方式这种方式周期性地查询Kafka,来获得每个topic+partition的最新的offset,从而定义每个batch的offset的范围。 这种方式有以下优点:1. 简化并行读取:如果要读取多个partition,不需要创建多个DStream,然后对他们进行union操作,spark会创建和kafka partition一样多的RDD partition,并且会...原创 2018-08-20 16:27:08 · 575 阅读 · 1 评论 -
spark SQL实战
新闻网站1. 板块2. 新闻页面3. 新用户注册4. 用户跳出案例分析每天每个页面的PV:pv是Page View,是指一个页面被所有用户的访问次数的总和,页面被访问一次就被记录一次PV每天每个页面的UV:UV是User View,是指一个页面被多少个用户访问了,一个用户访问一次是一次UV,一个用户访问多次还是一次UV新用户注册比率:当天注册用户数/当天未注册用户数...原创 2018-08-23 15:06:03 · 203 阅读 · 0 评论 -
window滑动窗口
spark Streaming提供了滑动窗口操作的支持,从而我们可以对一个滑动窗口内的数据执行计算操作,每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window DStream的一个RDD 统计每隔10秒,统计最近60秒的词频 最近一小时热点搜索词查询...原创 2018-08-21 10:25:39 · 542 阅读 · 0 评论 -
数据倾斜解决之使用随机key实现双重聚合
1. 原理第一轮聚合的时候,对key进行打散,将原先一样的key,变成不一样的key,相当于是将每个key分为多组;先针对多个组,进行key的局部聚合,接着,再去除掉每个key的前缀,然后对所有的key,进行全局的聚合2. 使用场景groupByKeyreduceByKey这叫适合这种方式,join,就不会这样来做了 ...原创 2018-07-21 10:03:43 · 483 阅读 · 0 评论 -
数据倾斜解决方案之提高shuffle操作reduce并行度
提高shuffle操作的reduce并行度 将reduce task的数量,变多,就可以让每个reducetask分配到更少的数据量,这样的话,也许就可以缓解,或者甚至是基本解决掉数据倾斜的问题 提升shuffle reduce端并行度,怎么来操作很简单,主要给我们所有的shuffle算子,比如groupByKey,countByKey,reduceByKey,在调用的时候,传...原创 2018-07-20 17:18:13 · 914 阅读 · 0 评论