自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 166、Spark Streaming实战开发进阶之新闻网站关键指标实时统计

生产者代码public class AccessProducer extends Thread { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); private static Random random = new Random(); private static ...

2019-01-27 16:40:00 1454

原创 1、had a not serializable result: org.apache.kafka.clients.consumer.ConsumerRecord

Spark Streaming 整合Kafka报这个错Spark版本 2.4.0 Kafka版本0.10.2.2首先看模拟产生日志代码public class AccessProducer extends Thread { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); pr...

2019-01-26 16:17:22 4706 1

原创 165、Spark Streaming实战开发进阶之自定义Receiver

spark streaming可以从任何数据源来接收数据,哪怕是除了它内置支持的数据源以外的其他数据源(比如flume、kafka、socket等)。如果我们想要从spark streaming没有内置支持的数据源中接收实时数据,那么我们需要自己实现一个receiver。实现一个自定义的receiver一个自定义的receiver必须实现以下两个方法:onStart()、onStop()...

2019-01-26 13:43:00 1348

原创 164、Spark SQL实战开发进阶之新闻网站关键指标离线统计

实战背景新闻网站版块 新闻页面 新用户注册 用户跳出案例需求分析每天每个页面的PV PV是Page View,是指一个页面被所有用户访问次数的总和,页面被访问一次就被记录1次PV 每天每个页面的UV UV是User View,是指一个页面被多少个用户访问了,一个用户访问一次是1次UV,一个用户访问多次还是1次UV 新用户注册比率 当天注册用户数 / 当天未注册用户的访...

2019-01-26 10:24:00 1493

原创 163、Spark SQL实战开发进阶之CLI命令行使用

Spark SQL CLI是一个很方便的工具,可以用来在本地模式下运行Hive的元数据服务,并且通过命令行执行针对Hive的SQL查询。但是我们要注意的是,Spark SQL CLI是不能与Thrift JDBC server进行通信的。如果要启动Spark SQL CLI,只要执行Spark的bin目录下的spark-sql命令即可./bin/spark-sql --jars /usr/l...

2019-01-24 16:22:00 1535

原创 162、Spark SQL实战开发进阶之Thrift JDBC、ODBC Server

Spark SQL的Thrift JDBC/ODBC server是基于Hive 0.13的HiveServer2实现的。这个服务启动之后,最主要的功能就是可以让我们通过Java JDBC来以编程的方式调用Spark SQL。此外,在启动该服务之后,可以通过Spark或Hive 0.13自带的beeline工具来进行测试。要启动JDBC/ODBC server,主要执行Spark的sbin目录下...

2019-01-24 16:19:00 2298

原创 161、Spark内核原理进阶之repartition算子内部实现原理

看图 repartition.pngrepartition算子,repartition算子=coalesce(true)map,附加了前缀,根据要重分区成几个分区,计算出前缀 shuffle->colesceRDD 去掉前缀,得到最终重分区好的RDD...

2019-01-24 14:10:00 2929

原创 160、Spark内核原理进阶之coalesce算子内部实现原理

看图 coalesce.png

2019-01-24 13:55:00 1593

原创 159、Spark内核原理进阶之cartesian算子内部实现原理

直接看图 cartesian.png

2019-01-24 13:52:00 1460

原创 158、Spark内核原理进阶之sortByKey算子内部实现原理

sortByKey.png sortByKeyShuffledRDD,做shuffle read,将相同的key拉到一个partition中来 mapPartitions,对每个partitions内的key进行全局的排序

2019-01-24 13:44:00 1919

原创 157、Spark内核原理进阶之join算子内部实现原理

join.png join算子的原理cogroup,聚合两个rdd的key flatMap,聚合后的每条数据,都可能返回多条数据 将每个key对应的两个集合的所有元素,做了一个笛卡尔积...

2019-01-24 11:50:00 1486

原创 156、Spark内核原理进阶之intersection算子内部实现原理

可以先看下intersection算子例子,https://www.jianshu.com/p/c889a606c2e1上图intersection.png 

2019-01-24 11:02:00 1557

原创 155、Spark内核原理进阶之cogroup算子内部实现原理

首先看一段代码 public static void cogroup2() { // 创建SparkConf SparkConf sparkConf = new SparkConf().setAppName("cogroupJava").setMaster("local"); // 创建JavaSparkContext J...

2019-01-24 10:39:00 1699

原创 154、Spark内核原理进阶之distinct算子内部实现原理

distinct.png distinct算子的原理首先,自己先给每个值打上一个v2,变成一个tuple reduceByKey(...仅仅返回一个value) 将去重后的数据,从tuple还原为单值

2019-01-24 10:03:00 1423

原创 153、Spark内核原理进阶之reduceByKey算子内部实现原理

先看原理图 reduceByKey.png reduceByKey,跟groupByKey有一些异同之处不同之处:reduceByKey,多了一个rdd,MapPartitionsRDD,存在于stage0的,主要是代表了进行本地数据归约之后的rdd。所以,要网络传输的数据量,以及磁盘IO等,会减少,性能更高。 相同之处:后面进行shuffle read和聚合的过程基本和...

2019-01-24 09:46:00 1715

原创 152、Spark内核原理进阶之groupByKey算子内部实现原理

一般来说,在执行shuffle类的算子的时候,比如groupByKey、reduceByKey、join等。其实算子内部都会隐式地创建几个RDD出来。那些隐式创建的RDD,主要是作为这个操作的一些中间数据的表达,以及作为stage划分的边界。因为有些隐式生成的RDD,可能是ShuffledRDD,dependency就是ShuffleDependency,DAGScheduler的源码,就会将...

2019-01-24 09:35:00 1726

原创 151、Spark内核原理进阶之union算子内部实现原理

union算子原理新的rdd,会将旧的两个rdd的partition,原封不动地给挪过来 新的rdd的partition的数量,就是旧的两个rdd的partition的数量的综合 看图   Union算子.png ...

2019-01-24 09:27:00 1912

原创 150、Spark核心编程进阶之综合案例

案例背景如果你是在一个互联网公司,然后你的公司现在也在做移动互联网,做了一个手机app那么你的手机app的用户,每次进行点击,或者是一些搜索操作的时候,都会跟你的远程的后端服务器做一次交互也就是说,你的手机app,首先会往后端服务器发送一个请求,然后你的后端服务器会给你的手机app返回一个响应,响应的内容可能是图片、或者文字、或者json此时,就完成了一次你的移动端app和后端服务器之间...

2019-01-22 18:00:00 1309

原创 149、Spark核心编程进阶之Shuffle相关

shuffle操作原理是spark中一些特殊的算子操作会触发的一种操作shuffle操作,会导致大量的数据在不同的机器和节点之间进行传输,因此也是spark中最复杂、最消耗性能的一种操作我们可以通过reduceByKey操作作为一个例子,来理解shuffle操作先看图 shuffle操作原理.pngreduceByKey算子会将上一个RDD中的每个key对应的所有val...

2019-01-22 16:25:00 1401

原创 148、Spark核心编程进阶之takeSampled以及公司年会抽奖案例

takeSample算子,与sample不同之处,两点action操作,sample是transformation操作 不能指定抽取比例,只能是抽取几个public class TakeSampled { public static void main(String[] args) { SparkConf conf = new SparkConf() ...

2019-01-22 09:52:00 1282

原创 147、Spark核心编程进阶之repartition以及公司新增部门案例

repartition算子,用于任意将rdd的partition增多,或者减少,与coalesce不同之处在于,coalesce仅仅能将rdd的partition变少,但是repartition可以将rdd的partiton变多建议使用的场景一个很经典的场景,使用Spark SQL从hive中查询数据时 ,Spark SQL会根据hive对应的hdfs文件的block数量还决定加载出来的数据...

2019-01-22 09:50:00 1440

原创 146、Spark核心编程进阶之coalesce以及公司部门整合案例

coalesce算子,功能是将RDD的partition缩减,减少 ,将一定量的数据,压缩到更少的partition中去建议的使用场景,配合filter算子使用,使用filter算子过滤掉很多数据以后,比如30%的数据,出现了很多partition中的数据不均匀的情况,此时建议使用coalesce算子,压缩rdd的partition数量,从而让各个partition中的数据都更加的紧凑公司...

2019-01-22 09:44:00 1333

原创 145、Spark核心编程进阶之cartesian以及服装搭配案例

cartesian,中文名,笛卡尔乘积比如说两个RDD,分别有10条数据,用了cartesian算子以后 ,两个RDD的每一条数据都会和另外一个RDD的每一条数据执行一次join 最终组成了一个笛卡尔乘积小案例比如说,现在5件衣服,5条裤子,分别属于两个RDD ,就是说,需要对每件衣服都和每天裤子做一次join,尝试进行服装搭配public class Cartesian { ...

2019-01-22 09:38:00 1386

原创 144、Spark核心编程进阶之aggregateByKey以及单词计数案例

reduceByKey可以认为是aggregateByKey的简化版aggregateByKey,分为三个参数,,多提供了一个函数,Seq Function就是说自己可以控制如何对每个partition中的数据进行先聚合,类似于mapreduce中的,map-side combine然后才是对所有partition中的数据进行全局聚合第一个参数是,每个key的初始值第二个是个函数,Se...

2019-01-22 09:33:00 1407

原创 143、Spark核心编程进阶之distinct以及网站uv统计案例

distinct算子,对rdd中的数据进行去重uv统计案例uv:user view,每天每个用户可能对网站会点击多次此时,需要对用户进行去重,然后统计出每天有多少个用户访问了网站,而不是所有用户访问了网站多少次(pv)public class Distinct { public static void main(String[] args) { SparkCo...

2019-01-21 22:28:00 1315

原创 142、Spark核心编程进阶之intersection以及公司跨多项目人员查询案例

intersection算子,获取两个rdd中,相同的数据public class Intersection { public static void main(String[] args) { SparkConf conf = new SparkConf() .setAppName("IntersectionJava") ...

2019-01-21 22:22:00 1425

原创 141、Spark核心编程进阶之union以及公司部门合并案例

union算子,将两个RDD的数据,合并为一个RDDpublic class Union { public static void main(String[] args) { SparkConf conf = new SparkConf() .setAppName("UnionJava") .setMas...

2019-01-21 22:18:00 1302

原创 140、Spark核心编程进阶之sample以及公司年会抽奖案例

sample算子,可以使用指定的比例,比如说0.1或者0.9,从RDD中随机抽取10%或者90%的数据,从RDD中随机抽取数据的功能,推荐不要设置第三个参数,feedpublic class Sample { public static void main(String[] args) { SparkConf conf = new SparkConf() ...

2019-01-21 22:13:00 1424

原创 138、Spark核心编程进阶之mapPartitions以及学生成绩查询案例

mapPartitions,类似map,不同之处在于,map算子,一次就处理一个partition中的一条数据,mapPartitions算子,一次处理一个partition中所有的数据推荐的使用场景如果你的RDD的数据量不是特别大,那么建议采用mapPartitions算子替代map算子,可以加快处理速度但是如果你的RDD的数据量特别大,比如说10亿,不建议用mapPartitions,...

2019-01-21 22:02:00 1521

原创 139、Spark核心编程进阶之mapPartitionsWithIndex以开学分班案例

mapPartitionsWithIndex,这个算子可以拿到每个partition的indexPartitionsWithIndex { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("MapPartitionsWithIndexJava")...

2019-01-21 22:02:00 1281

原创 137、Spark核心编程进阶之spark算子的闭包原理

Spark中一个非常难以理解的概念,就是在集群中分布式并行运行时操作的算子外部的变量的生命周期首先看张图 spark算子的闭包原理.png通常来说,这个问题跟在RDD的算子中操作作用域外部的变量有关,所谓RDD算子中,操作作用域外部的变量,指的是,类似下面的语句: val a = 0; rdd.foreach(i -> a += i),此时,对rdd执行的foreach算子...

2019-01-21 11:41:00 1366

原创 136、Spark核心编程进阶之spark-submit配置第三方依赖

使用spark-submit脚本提交spark application时,application jar,还有我们使用--jars命令绑定的其他jar,都会自动被发送到集群上去spark支持以下几种URL来指定关联的其他jarfile: 是由driver的http文件服务提供支持的,所有的executor都会通过driver的HTTP服务来拉取文件hdfs:,http:,https:,ft...

2019-01-18 14:10:00 1558

原创 135、Spark核心编程进阶之SparkConf、spark-submit以及spark-defaults.conf

默认的配置属性spark-submit脚本会自动加载conf/spark-defaults.conf文件中的配置属性,并传递给我们的spark应用程序加载默认的配置属性,一大好处就在于,我们不需要在spark-submit脚本中设置所有的属性比如说,默认属性中有一个spark.master属性,所以我们的spark-submit脚本中,就不一定要显式地设置--master,默认就是loca...

2019-01-18 14:08:00 1700

原创 134、Spark核心编程进阶之spark-submit基础及例子

基础参数wordcount.sh/usr/local/spark/bin/spark-submit \--class com.zj.spark.core.WordCountCluster \--master spark://spark-project-1:7077 \--deploy-mode client \--conf <key>=<value> \...

2019-01-18 14:01:00 1490

原创 133、Spark核心编程进阶之yarn模式相关参数详解

属性名称 默认值 含义 spark.yarn.am.memory 512m client模式下,YARN Application Master使用的内存总量 spark.yarn.am.cores 1 client模式下,Application Master使用的cpu数量 spark.driver.cores 1 cluster模式下,...

2019-01-18 09:34:00 1536

原创 132、Spark核心编程进阶之yarn模式下日志查看

在yarn模式下,spark作业运行相关的executor和ApplicationMaster都是运行在yarn的container中的一个作业运行完了以后,yarn有两种方式来处理spark作业打印出的日志第一种是聚合日志方式(推荐,比较常用)这种方式的话,顾名思义,就是说,将散落在集群中各个机器上的日志,最后都给聚合起来,让我们可以统一查看如果打开了日志聚合的选项,即yarn.log...

2019-01-18 09:29:00 1560

原创 131、Spark核心编程进阶之yarn模式运行spark作业

前提如果想要让spark作业可以运行在yarn上面,那么首先就必须在spark-env.sh文件中,配置HADOOP_CONF_DIR或者YARN_CONF_DIR属性,值为hadoop的配置文件目录,即HADOOP_HOME/etc/hadoop,其中包含了hadoop和yarn所有的配置文件,比如hdfs-site、yarn-site等spark需要这些配置来读写hdfs,以及连接到ya...

2019-01-18 09:24:00 1366

原创 130、Spark核心编程进阶之yarn-cluster模式原理

yarn-cluster模式原理.png yarn-cluster与yarn-client唯一的不同yarn-client下,driver运行在spark-submit提交的机器上,ApplicationMaster只是相当于一个ExecutorLauncher,仅仅负责申请启动executor;具体负责调度的,还是driveryarn-cluster下,ApplicationMa...

2019-01-18 09:24:00 1343

原创 129、Spark核心编程进阶之yarn-client模式原理

yarn-client模式原理.pngdriver在本机启动 driver跟cluster manager申请资源,yarn-client,ResourceManager RM分配一个container资源,在一个NM上,启动AM(ExecutorLauncher) AM会找RM去申请资源,启动executor进程 RM会分配container给AM,然后AM会拿着containe...

2019-01-18 09:24:00 1321

原创 128、Spark核心编程进阶之standalone作业监控和日志记录

standalone作业监控和日志记录standalone模式下的作业的监控,很简单,就是通过spark web ui,8080端口spark standalone模式,提供了一个web界面来让我们监控集群,并监控所有的作业的运行web界面上,提供了master和worker的相关信息,默认的话,我们的web界面是运行在master机器上的8080端口可以通过配置spark-env.s...

2019-01-17 22:18:00 1424

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除