Spark
爆发的~小宇宙
github地址:https://github.com/ordinary-zhang?tab=repositories
展开
-
Spark 2.2.0下载安装及源码编译
1.官网2.下载地址3.所需环境jdk1.8+ 参考地址maven3.3.9 参考地址,下载maven后进行环境变量的设置,设置maven的内存使用,在环境变量中加入如下命令export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"scala2.11.8 参考地址git:直接输入命令:sudo yum insta...原创 2018-02-03 22:53:50 · 3013 阅读 · 1 评论 -
Spark中的窄依赖和宽依赖
1 概述今天我们来谈一谈Spark中的窄依赖和宽依赖。RDD大家应该有一定的理解了,弹性的分布式数据集,这里的弹性依赖于RDD之间的依赖关系,即使数据丢失也能重新计算。RDD之间的依赖关系又分为窄依赖和宽依赖,那到底什么是窄依赖什么是宽依赖呢?带着这个问题进入我们今天的学习。2 窄依赖和宽依赖2.1Lineage血统Lineage保存了RDD的依赖关系。 RDD只支持粗粒度转换...原创 2018-05-24 16:56:03 · 5327 阅读 · 1 评论 -
Spark中的RDD、DataFrame、Dataset对比
1 RDDRDD是Spark提供的最重要的抽象的概念,弹性的分布式数据集,它是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编操作集合的方式,进行各种并行操作。Spark的RDD内置了各种函数操作,举个例子,我们编写wordcount案例,如果使用mapreduce进行编程,还是很复杂的,如果用RDD的话代码量大大的减少(scala编程一句话搞定),所以相对mapreduce来说单...原创 2018-05-29 16:30:46 · 7708 阅读 · 0 评论 -
spark 开发中log4j详解与配置步骤
1 环境 <properties> <scala.version>2.11.8</scala.version> <spark.version>2.2.0</spark.version> <hadoop.version>2.6.0-cdh5.7.0</hadoop.version>原创 2018-06-12 21:37:42 · 8928 阅读 · 0 评论 -
Spark Streaming中的Transformations和Output Operations的使用
概述上一篇我们对Spark Streaming进行了简单的介绍,并使用socket的方式进行了测试,进一步对DStream,以及架构进行了学习,然后介绍了简单的源码分析。最后提到Spark Streaming提供了两类内置streaming sources。 1. 基本来源:StreamingContext API中直接可用的来源。 示例:文件系统和socket connections。 ...原创 2018-06-05 21:51:48 · 605 阅读 · 0 评论 -
Spark SQL 外部数据源(External DataSource)以及常用操作
1 概述Spark1.2中,Spark SQL开始正式支持外部数据源。Spark SQL开放了一系列接入外部数据源的接口,来让开发者可以实现。使得Spark SQL可以加载任何地方的数据,例如mysql,hive,hdfs,hbase等,而且支持很多种格式如json, parquet, avro, csv格式。我们可以开发出任意的外部数据源来连接到Spark SQL,然后我们就可以通过外部数...原创 2018-05-31 10:27:13 · 2949 阅读 · 0 评论 -
两阶段聚合(局部聚合+全局聚合)解决groupby产生数据倾斜的简单案例
1概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。该篇博客参考美团的spark高级版,只是修改了代码使用了scala写的。2产生原因方案适用场景:对RDD执行reduceByKey等聚合类shuffle算子或者在Spark SQL中使用...原创 2018-07-20 14:38:12 · 3727 阅读 · 0 评论 -
使用Broadcast变量与map类算子实现join操作,进而完全规避掉shuffle类的操作
概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。该篇博客参考美团的spark高级版,使用scala代码进行简单的模拟。方案适用场景在对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个...原创 2018-07-27 13:55:22 · 4024 阅读 · 0 评论 -
Spark 中的shuffle解读以及repartition和coalesce介绍以及使用场景
1 概述官网描述 shuffle被称为”奇迹发生的地方”,在Spark中某些操作会触发shuffle,例如join, *By 或者 *ByKey等。我们应该都知道一句话:尽量去避免shuffle,为什么呢? 因为当作业运行的时候,shuffle是非常损耗性能的,shuffle是spark中重新分配数据的机制,那就意味着,要从集群中不同的节点去拉取数据,进行聚合或者join操作。举个例子,当...原创 2018-05-25 17:52:39 · 6766 阅读 · 0 评论 -
Spark SQL作用及其架构
1 概述对于Spark SQL的学习:本文首先会介绍Spark SQL的产生背景,知道了产生背景我们开始学习Spark SQL的作用和特点,最后介绍其原理。下一篇文章会介绍如何使用Spark SQL。 官网地址2 Spark SQL产生背景2.1 SQL的重要性很多传统的dba人员或者熟悉关系新数据库的人在遇到日益增长的数据量,关系型数据库已经存储不了那么多信息,那么如果...原创 2018-05-03 22:58:59 · 6890 阅读 · 0 评论 -
Spark SQL基本操作
1 概述本文介绍spark sql的几种执行方式:SQL,DataFramesAPI与Datasets API(但会使用同一个执行引擎),Spark2.0中引入了SparkSession的概念。该篇文章只是做一个简单的了解,让大家有一个感官性的认识。下一篇会对RDD、DataFrame、Dataset进行一个详细的介绍。spark sql是为了处理结构化数据的一个spark 模块。不同于s...原创 2018-05-04 10:55:00 · 2440 阅读 · 0 评论 -
Kudu与Spark 集成
1.环境 <properties> <scala.version>2.11.8</scala.version> <spark.version>2.2.0</spark.version> <kudu.version>1.5.0</kudu.version> </properties...原创 2019-04-17 16:18:52 · 2508 阅读 · 0 评论 -
Spark操作kudu(Scala)
1概述Kudu官网最近在学习Kudu今天就把学到的一些基本操作记录下,使用Spark操作Kudu实现表的创建,查询(RDD和Spark SQL方式)修改以及删除1 环境 <properties> <scala.version>2.11.8</scala.version> <spark.version>2.2.0</spa...原创 2019-04-18 17:24:35 · 2414 阅读 · 1 评论 -
Spark提交任务出现的错误:scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
概述操作:spark 操作kudu时编写代码打成package使用spark-submit提交任务使用spark-submit 提交任务时出现如下错误:Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object; ...原创 2019-06-10 14:57:31 · 1921 阅读 · 0 评论 -
Spark core中的cache、persist区别,以及缓存级别详解
概述本次我们将学习Spark core中的cache操作以及和 persist的区别。首先大家可能想到的是cache到底是什么呢?他有什么作用呢?我们可以带着这两个问题进行下面的学习。 本文结构: 1. cache的产生背景 2. cache的作用 3. 源码解析cache于persist的区别,以及缓存级别详解1 cache的产生背景我们先做一个简单的测试读取一个本地文件做一...原创 2018-05-23 20:54:53 · 3868 阅读 · 0 评论 -
Spark Core API实现一些简单的案例
1 读取Sequence File读取文本格式我们可以使用text files,那么读取Sequence File该怎么办呢? 当然官网给我们提供了另外一种方式,sequenceFile[K, V] 方法,其中k和v是文件中的键值和值类型。他们实现了Writable接口。 - 准备数据通过Hive创建一份Sequence File的数据create table states_ra...原创 2018-05-23 18:07:53 · 1309 阅读 · 0 评论 -
Spark性能调优(reduceByKey VS groupByKey,Map vs MapPartition,foreachPartitions vs foreach,Kryo优化序列化性能等)
1 概述官网对于Spark的调优讲解 对于spark的性能调优我推荐大家去看看美团的文章,这里我会据一些例子让大家更好的去理解。2 调优这里我列举出美团文章中提出的一些调优,其实都在官网上。对一些难理解的通过代码和图片的方式进行解析。 1. 避免创建重复的RDD 2. 尽可能复用同一个RDD 3. 对多次使用的RDD进行持久化 (这篇文章进行了详细的讲解) 4. 尽量避免使用...原创 2018-05-25 22:06:09 · 1065 阅读 · 1 评论 -
spark运行模式
1概述saprk的运行模式:local/yarn/standalone/mesos/k8s;local模式是最常用的一种模式。spark目录介绍total 108drwxr-xr-x. 3 hadoop hadoop 4096 Mar 3 08:34 bindrwxrwxr-x. 2 hadoop hadoop 4096 Apr 20 07:47 confdrwxr-...原创 2018-04-23 17:29:04 · 354 阅读 · 0 评论 -
Spark中的一些基本概念,及运行流程
1 Spark中的一些基本概念话不多说,先来一个官网地址:链接 1. Application:用户基于spark的代码,由一个Driver和多个Excutor组成。 2. Application jar:将用户基于spark的代码打包成的jar包。 3. Driver program:运行application的main()函数并自动创建SparkContext。通常SparkCon...原创 2018-04-23 21:03:46 · 1447 阅读 · 0 评论 -
Spark的好处及优势
1 官网地址链接地址2 MapReduce局限性1)繁杂:Map和Reduce两种操作 2)处理效率低效。IO:Map中间结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据; 任务调 度和启动开销大;进程级别 Map端和Reduce端均需要排序 3)不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘) 和流式处理(点击日志分析)...原创 2018-04-23 21:41:29 · 19221 阅读 · 0 评论 -
从源码中进行详细剖析什么是RDD
1 源码地址源码地址,这里建议搭建使用maven进行项目构建,方便查看源码。2 什么是RDD下图给出了源码中的一段注释: 可以理解为:是弹性分布式数据集,是spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合;这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。 1. Resilient:是指在任何时候都能进行重算,是一种有容错机制的...原创 2018-04-26 10:37:21 · 357 阅读 · 0 评论 -
spark运行模式中的一些错误
错误一Caused by: ERROR XJ040: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@19105a87, see the next exception for details. ...原创 2018-04-26 10:57:56 · 5930 阅读 · 2 评论 -
为什么会产生RDD及其作用
1为什么会产生RDD(1) 传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。RDD正是解决这一缺点的抽象方法。 (2) RDD是Spark提供的最重要的抽象的概念,它是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编操作集合的方式,进行各种并行操作。可以将RDD理...原创 2018-04-26 11:45:09 · 1855 阅读 · 0 评论 -
RDD的创建方式及注意事项
1 RDD的创建方式1.1 SparkContext’s parallelize(并行化集合)并行化集合通过调用SparkContext的并行化方法在驱动程序(Scala Seq)中的现有集合上创建的。复制集合的元素以形成可并行操作的分布式数据集。val data = Array(1, 2, 3, 4, 5)val distData = sc.parallelize(data)...原创 2018-04-26 14:53:15 · 699 阅读 · 0 评论 -
RDD中的一些常用的算子操作
1 算子分类RDD的算子分类可以分为2种,Transformation和Action类 。 Transformation:根据数据集创建一个新的数据集,计算后返回一个新RDD;例如:Map将数据的每个元素经过某个函数计算后,返回一个新的分布式数据集。Action:对数据集计算后返回一个数值value给驱动程序;例如:collect将数据集的所有元素收集完成返回给程序。2 Transf...原创 2018-04-26 16:05:40 · 1071 阅读 · 1 评论 -
IDEA中使用Maven开发Spark应用程序
1 环境搭建1.1 使用maven创建spark项目 如上图所示点击next创建自己的spark项目; 对maven进行修改1.2 修改pom.xml&lt;!--依赖的版本--&gt;&lt;properties&gt; &lt;scala.version&gt;2.11.8&lt;/scala.versio原创 2018-04-27 20:17:05 · 3623 阅读 · 0 评论 -
spark-submit提交应用程序出现的错误
错误118/04/20 20:51:54 ERROR SparkContext: Error initializing SparkContext.org.apache.spark.SparkException: Could not parse Master URL: '2' at org.apache.spark.SparkContext$.org$apache$spar...原创 2018-04-27 20:28:08 · 4726 阅读 · 0 评论 -
Spark on YARN两种运行模式
1 官网地址链接2 Spark on Yarn的两种运行模式Spark on Yarn的两种运行模式:cluster和client;一句话概述两种的区别就是Spark driver到底运行再什么地方,带着这个问题来学习两种的区别;In cluster mode:Driver运行在NodeManage的AM(Application Master)中,它负责向YARN申请资源,并监督...原创 2018-04-28 16:28:37 · 1393 阅读 · 0 评论 -
Spark on yarn模式的参数设置即调优
1 启动方式执行命令./spark-shell --master yarn默认运行的是client模式。执行./spark-shell --master yarn-client或者./spark-shell --master yarn --deploy-mode client运行的也是client。执行./spark-shell --master yarn-cluster或者./spar...原创 2018-04-28 21:02:05 · 6301 阅读 · 0 评论 -
Spark history-server详解
概述这里作者和大家一起学习Spark 中的history-server,那他到底是什么呢?该如何去学习呢? 我们可以带着下面几个问题进行详细的学习于思考: 1. history-server产生背景 2. history-server的作用 3. 如何配置和使用 4. history-server重要参数 5. sc.stop的重要性 6. REST API 1 histor...原创 2018-05-21 18:43:05 · 13048 阅读 · 4 评论 -
SparkStreaming消费kafka中的数据保存到HBase中简单demo
package cn.zhangyuimport cn.zhangyu.HbaseStreaming.createTableimport cn.zhangyu.utils.JsonUitlsimport org.apache.hadoop.hbase.client.{ConnectionFactory, Put, Table}import org.apache.hadoop.hbase.u...原创 2019-09-30 11:18:51 · 1984 阅读 · 2 评论