Spark及源码
Spark源码深入分析
pub.ryan
专注于大数据
展开
-
spark join案例:Json数据的解析中的脏数据过滤、join并写入mysql
源数据 :{"cid":1,"money":600.0,"longitude":116.397128,"latitude":39.916527,"oid":"o123",}"oid":"o112","cid":3,"money":200.0,"longitude":118.396128,"latitude":35.916527}{"oid":"o124","cid":2,"money":200.0,"longitude":117.397128,"latitude"...原创 2020-12-15 23:24:32 · 502 阅读 · 0 评论 -
Spark中决定Shuffle到哪个分区及Reduce个数的核心:HashPartitioner和RangePartitioner分区器
1、Spark的分区器:主要有HashPartitioner和RangePartitioner两种决定了RDD中每条数据经过Shuffle过程属于哪个分区; 也决定了Reduce的个数。(只有Key-Value类型的RDD才有分区的,非Key-Value类型的RDD分区的值是None的)2、HashPartitioner实现:对于给定的key,计算其hashCode,并除于分区的个数取余,如果余数小于0,则用余数+分区的个数,最后返回的值就是这个key所属的分区ID。由于hash原创 2020-12-15 22:39:50 · 601 阅读 · 0 评论 -
spark中的join\left join\right join\full join
原创 2020-12-15 20:09:44 · 628 阅读 · 0 评论 -
Spark Shuffle 并行度
原文位置:Spark性能调优:合理设置并行度Spark并行度原理以 Spark 中的 WordCount 作业为例,每个Spark作业其实都是一个 Application,每个 Application 对应多个 Jobs,一个 action 操作(比如 collect)触发一个 job,在WordCount程序中有一个 job,每个 job 拆成多个 stage(发生 shuffle 的时候回拆分出一个 stage),reduceByKey 处会发生 shuffle。reduceByKey原创 2020-12-15 10:03:55 · 1076 阅读 · 0 评论 -
Spark Task:移动计算策略——任务调度数据本地性
PROCESS_LOCAL:一个JVM内部,将RDD缓存、Executor、数据所在的datanode在同一个进程内NODE_LOCAL:在多个Executor之间,同一台主机上进行调度RACK_LOCAL:在同一个机架内NO_PREF:不考虑ANY:任意都可以其中优先的顺序是:PROCESS_LOCAL>NODE_LOCAL>RACK_LOCAL可以分别设置spark.locality.wait.process、spark.locality.wait.node、sp原创 2020-12-15 09:29:17 · 688 阅读 · 0 评论 -
普通RDD转PairRDD、groupByKey与ReduceByKey区别
package test.rddtestimport org.apache.spark.{SparkConf, SparkContext}object RDD2PairRDDDemo { def myfunc1(index: Int, iter: Iterator[(String)]) : Iterator[String] = { iter.toList.map(x => "[partID:" + index + ", val: " + x + "]").iterat.原创 2020-12-14 23:01:49 · 330 阅读 · 0 评论 -
深入解析Spark中的RPC
前言Spark是一个快速的、通用的分布式计算系统,而分布式的特性就意味着,必然存在节点间的通信,本文主要介绍不同的Spark组件之间是如何通过RPC(Remote Procedure Call) 进行点对点通信的。分为3个章节,Spark RPC的简单示例和实际应用 Spark RPC模块的设计原理 Spark RPC核心技术总结1. Spark RPC的简单示例和实际应用Spark的RPC主要在两个模块中,1)在Spark-core中,主要承载了更好的封装server和clie.转载 2020-12-10 11:40:24 · 211 阅读 · 0 评论 -
spark03: 基础——Spark history server、Spark任务调度、读写分布式数据
1、Spark的历史服务-spark history server在实际生产中,需要查看已经执行的任务的详细日志信息[root@linux01 conf]# start-history-server.sh1.1 配置历史服务1.1.1 修改spark conf下的spark-defaults.conf,添加# 启用spark history server eventlog.dir会为每一个任务创建一个子目录spark.eventLog.enabled tru...原创 2020-11-28 17:33:39 · 423 阅读 · 0 评论 -
spark报错:ERROR SparkContext: Error initializing SparkContext.
今天刚好spark history server 配好,就出现了这个错误:ERROR SparkContext: Error initializing SparkContext.最后一再仔细看,才发现是spark conf下的spark-defaults.conf文件中的错误,把hdfs搞错了,正确的应该是:spark.eventLog.dir hdfs://linux01.pub:9000/spark-logs...原创 2020-11-28 16:38:42 · 3391 阅读 · 0 评论 -
spark02: 围绕Spark3.0.1为主Hadoop3.2、Mysql、Hbase2.3.3、Hive3.1.2、ZooKeeper3.5.5、Flume、Kafka、Redis搭建
非生产环境,就使用一个新一点的版本,提前先踩踩坑,版本的选型真是一个头疼的问题,先看一下apache的官网的测试图:先选好Spark:3.0.1对应的Hadoop:3.2和2.7中选一个,综合上面的图,2.7无法使用HBase,只能选3.2了#hadoop软件:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1-src.tar.gz#spark软件:http://archive.apac原创 2020-11-26 17:26:41 · 1075 阅读 · 1 评论 -
spark01、快速使用之spark环境设置:基于物理机centos7环境搭建分布式集群
1、配置vmware15网络Edit-Virtual Network Editor 找到使用nat的那块虚拟网卡:配置网段:192.168.10.0/255.255.255.0 配置NAT Settings网关:192.168.10.12、配置对应VMNAT的网卡地址选中网卡点连接 以太网右上脚选中+号,增加一个网卡配置在新增加的网卡里,取个名称VM8 ,网卡地址选择VM8 NAT的那一块ipv4处填写与虚拟机互联的地址:192.168.10.2/255..原创 2020-11-25 21:48:13 · 269 阅读 · 0 评论 -
spark-02 用scala写一个集群运行代码
1、配置maven注意:提交到spark集群中执行时是不需要spark-core和hadoop、scala的依赖包的,如果生要打进去也可以,但jar包太大,没有必要,只要在依赖处将范围限定一下即可:<dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.v原创 2020-11-02 12:51:47 · 206 阅读 · 0 评论 -
spark-01 小试牛刀:用spark shell一句话实现简单的wordcount
1、准备数据961M -rw-r--r--. 1 root root 644M Nov 2 07:43 wcdata.txt利用linux:[root@spark01 ~]# echo hello kerry tom jerry cat big data helo hadoop keery kerry jerry dog tom >> 1.txt#先增加到约1M或10M[root@spark01 ~]# for i in {1..10000}; do cat 1.tx..原创 2020-11-02 00:13:11 · 182 阅读 · 0 评论