Spark
爱吃甜食_
一点点进步,让编程更有趣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spark 内存不足错误码
java.lang.OutOfMemoryErrorExecutorLostFailureExecutor exit code 为143executor losthearbeat time outshuffle file lost如果遇到以上问题,很有可能就是内存除了问题,可以先尝试增加内存如果还是解决不了,尝试数据倾斜调优...原创 2020-10-18 20:56:10 · 795 阅读 · 0 评论 -
sparkSQL sparkSQL自定义函数
sparkSQL自定义函数sparkSQL自定义函数代码sparkSQL自定义函数关键函数sparkSession.udf.register有两种风格:面向对象式风格,通过实现匿名内部类来实现自定义功能面向函数式风格(一般选这种,比较简洁,见代码)register:第一个参数为函数名,第二个参数为一个函数,最后一个参数是register的返回值类型第二个参数函数的前N个参数为该函数的返回值,最后一个参数为该函数的返回值代码import org.apache.spark.Sp原创 2020-09-16 00:18:28 · 449 阅读 · 0 评论 -
sparkSQL sparkSQL保存到不同数据源中
sparkSQL保存到不同数据源中代码代码package saveDifferentimport org.apache.spark.SparkConfimport org.apache.spark.sql.{DataFrame, SparkSession}object save { def main(args: Array[String]): Unit = { //1、创建SparkConf对象 val sparkConf: SparkConf = new SparkCon原创 2020-09-15 23:32:48 · 196 阅读 · 0 评论 -
sparkSQL sparkSQL读写数据到MySQL
sparkSQL读写数据到MySQL前言sparkSQL加载MySQL表中的数据sparkSQL写数据到MySQLsparkSQL写数据部署到集群pom依赖前言spark sql可以通过 JDBC 从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中流程图sparkSQL加载MySQL表中的数据import java.util.Propertiesimport org.apache.spark.SparkConfimp原创 2020-09-15 23:28:58 · 3457 阅读 · 0 评论 -
sparkSQL sparkSQL整合hive(spark on hive)
sparkSQL整合hivesparkSQL整合hivesparkSQL整合hive步骤示例数据库保存在本地和数据库保存在HDFS应用场景sparkSQL整合hivesparkSQL整合hive,即spark on hive。本质是把hive当做数据源,使用spark作为计算引擎来处理数据。sparkSQL整合hive步骤把hive安装目录下conf文件夹里的hive-site.xml拷贝到集群每一个spark安装目录下对应的conf文件夹中目的:让spark知道存放hive表的元数据的M原创 2020-09-15 14:29:43 · 1020 阅读 · 0 评论 -
sparkSQL sparkSQL操作hiveSQL
sparkSQL操作hiveSQLsparkSQL操作hiveSQLsparkSQL操作hiveSQL来操作本地文件sparkSQL操作hiveSQL来操作HDFS上的hivepom依赖sparkSQL操作hiveSQLsparkSQL操作hiveSQL并不是sparkSQL on hive。sparkSQL操作hiveSQL底层运行的依然是MR程序sparkSQL on hive是把hive当做数据源,spark作为计算引擎。核心:开启hive依赖enableHiveSupport()原创 2020-09-15 00:58:39 · 1374 阅读 · 0 评论 -
sparkSQL RDD转换成DataFrame并读取数据
RDD转换成DataFrame并读取数据利用反射机制通过StructType动态指定Schemapom依赖利用反射机制应用场景:在开发代码之前,可以事先确定好DataFrame的schema信息,通过反射机制后期直接映射成DataFrame的schema信息要点需要事先定义一个样例类,参数与schema信息一致需要手动导入隐式转换,注意导入对象要与前面定义的sparkSession对象名称一致代码示例import org.apache.spark.SparkContextimport o原创 2020-09-14 18:44:46 · 1811 阅读 · 1 评论 -
sparkSQL sparkSQL之DataFrame和DataSet
sparkSQL之DataFrameDataFrame概述DataFrame发展DataFrame是什么DataFrame和RDD的优缺点读取文件构建DataFrameDataFrame常用操作DataFrame概述DataFrame发展DataFrame前身是schemaRDD,schemaRDD直接继承RDD,是RDD的一个实现类在spark1.3.0之后把schemaRDD改名为DataFrame,它不在继承自RDD,而是自己实现RDD上的一些功能(如 map filter flatmap等原创 2020-09-14 18:32:29 · 926 阅读 · 0 评论 -
sparkSQL sparkSQL概述和特性
sparkSQL概述和特性sparkSQL的前世今生什么是sparkSQLsparkSQL的四大特性易整合统一的数据源访问兼容hive支持标准的数据库连接sparkSQL的前世今生hive ->翻译成sql->解析成MRshark->翻译成sql>解析成spark任务在spark出现之前,Shark是专门针对于spark的构建大规模数据仓库系统的一个框架Shark与Hive兼容、同时也依赖于Spark版本Hivesql底层把sql解析成了mapreduce程序,Sh原创 2020-09-10 18:04:02 · 369 阅读 · 0 评论 -
sparkstreaming sparkstreaming调优
sparkstreaming调优基于receiver接收器的调优调整BolckReceiver数量调整block数量调整receiver接受速率调整数据处理的并行度数据的序列化内存调优Output Operations性能开启压力反馈Elastic Scaling(资源动态分配)数据倾斜调优基于receiver接收器的调优现在很少使用receiver方式了,相关调优方式了解即可调整BolckReceiver数量BolckReceiver数量默认是1代码示例val kafkaStream = {原创 2020-09-10 00:43:02 · 470 阅读 · 0 评论 -
sparkstreaming sparkstreaming实现exactly-once
sparkstreaming实现exactly-once实现前提解决思路实现pom文件代码实现实现前提Source支持Replay流计算引擎本身处理能保证Exactly-Once。Sink支持幂等或事务更新解决思路接收数据:从Source中接收数据。转换数据:用DStream和RDD算子转换。储存数据:将结果保存至外部系统。关键问题把数据结果保存和提交偏移量放到一个事务里,要不都成功,要不都失败。实现pom文件 <dependency>原创 2020-09-09 20:50:37 · 345 阅读 · 0 评论 -
sparkstreaming ScalikeJDBC
ScalikeJDBC什么是ScalikeJDBCIDEA项目中导入相关库数据库操作数据库连接配置信息加载数据配置信息查询数据库并封装数据插入数据AutoCommit插入返回主键标识事务插入更新数据什么是ScalikeJDBCScalikeJDBC是Scala开发人员基于SQL的简洁数据库访问库。该库自然包装JDBC API,为您提供易于使用且非常灵活的API。更重要的是,QueryDSL使您的代码类型安全且可重用。ScalikeJDBC是一个实用且适合生产的产品。 将此库用于实际项目.ID原创 2020-09-09 20:34:01 · 237 阅读 · 0 评论 -
sparkstreaming sparkstreaming与kafka整合(两种receiver方式)
sparkstreaming两种receiver方式sparkstreaming语义sparkstreaming整合kafka的两种方式Receiver-based ApproachDirect Approach (No Receivers)Direct Approach下sparkstreaming整合kafka0.8Direct Approach下sparkstreaming整合kafka1.0sparkstreaming语义sparkstreaming有三种语义At most once 一原创 2020-09-09 19:55:11 · 713 阅读 · 0 评论 -
sparkstreaming sparkstreaming动态感知kafka分区
sparkstreaming动态感知kafka分区0.8版本kafka1.0版本kafka0.8版本kafka0.8版本kafka需要粘贴DirectKafkaInputDStream类并重写,比较麻烦。实现和部署可以参考一下链接代码实现部署1.0版本kafkasparkstreaming整合1.0版本的kafka天然支持动态感知kafka分区不用特殊处理如下采取直连模式整合kafkaval kafkaDStream: InputDStream[ConsumerRecord[Stri原创 2020-09-09 19:54:15 · 538 阅读 · 0 评论 -
sparkstreaming sparkstreaming容错机制
sparkstreaming容错机制sparkstreaming运行流程Executor失败Driver失败driver的自动重启设置数据丢失executor备份WAL预写日志实现步骤某个task特别慢sparkstreaming运行流程提交一个sparkstreaming程序到服务器运行,默认提交的服务器为client,并向ClusterManager报备申请资源。在一个executor中单独启动一个receiver线程(默认一个,可以更改成多个)用来接收数据。receiver根据指定时间间隔(原创 2020-09-08 17:30:25 · 390 阅读 · 0 评论 -
sparkstreaming sparkstreaming整合sparksql
sparkstreaming整合sparksql示意图代码示意图sparkstreaming实时处理DStream,SparkSQL批处理DataFramesparkstreaming处理的DStream内部封装有RDD,通过.toRDD将DStream转换成RDDSpqrkSQL处理的DataFrame内部同样封装有RDD,DataFrame通过注册成表,被SparkSQL处理所以本质上SpqrkSQL处理的还是DStream代码import org.apache.spark.Spar原创 2020-09-07 23:18:22 · 472 阅读 · 0 评论 -
sparkstreaming checkpoint
sparkstreaming checkpointcheckpointcheckpointcheckpoint用来保存以下两部分信息:之前运算结果中的数据driver端的元数据信息,即程序的执行逻辑。也就是说可以通过checkpoint来实现driver端程序的高可用注意如果程序中断之后,对代码进行了修改变更,此时checkpoint目录也就没有意义。还会按照之前的代码逻辑走import org.apache.spark.SparkConfimport org.apache.spa原创 2020-09-07 20:16:28 · 383 阅读 · 0 评论 -
sparkstreaming foreach foreachRDD foreachPartition
sparkstreaming 常见遍历函数的区别区别foreachforeachRDDforeachPartition官网示例代码示例官网链接区别foreach源码 /** Applies a function `f` to all values produced by this iterator. * * @param f the function that is applied for its side-effect to every element. *原创 2020-09-07 17:53:42 · 628 阅读 · 0 评论 -
sparkstreaming sparkstreaming窗口函数
sparkstreaming窗口函数windows函数概念sparkstreaming内置窗口函数代码示例官网链接windows函数概念与聚合函数每次只返回一个值不同,窗口函数可以每次返回当前数据流的多个值,并在数据流上进行滑动。如上图所示上图每次处理3个batch的数据,每个2秒进行一次滑动。因此会有数据的重复处理,如果不想重复处理可以将windows length和sliding internval设置成相等的值每次窗口滑动时,DStream中落入窗口的RDD就会被合并计算成新的windo原创 2020-09-07 10:27:38 · 570 阅读 · 0 评论 -
sparkstreaming transform筛选每批次前N位
transformsparkStreaming接受socket数据实现所有批次的单词次数累加sparkStreaming接受socket数据实现所有批次的单词次数累加import org.apache.log4j.{Level, Logger}import org.apache.spark.SparkConfimport org.apache.spark.rdd.RDDimport org.apache.spark.streaming.dstream.{DStream, ReceiverInput原创 2020-09-06 22:36:41 · 295 阅读 · 0 评论 -
SparkStreaming updateStateByKey和mapWithState
SparkStreaming常见算子示例两者的异同updateStateByKeymapWithState两者的异同相同:在spark1.6之后最终都由updateStateByKey执行差异:updateStateByKey:UpdateStateBykey会统计全局的key的状态,不管有没有数据输入,它会在每一个批次间隔返回之前的key的状态。updateStateBykey会对已存在的key进行state的状态更新,同时还会对每个新出现的key执行相同的更新函数操作。如果通过更新函原创 2020-09-06 19:47:22 · 337 阅读 · 0 评论 -
sparkstreaming sparkstreaming整合其常见数据源
sparkstreaming整合非API数据源示意图数据抽象socket数据源HDFS数据源flume数据源pom文件官网地址自定义数据源kafka数据源示意图以下几个数据源处理都以单词计数为例,如下图:数据抽象不论何种数据源,最终都会被抽象成ReceiverInputDStream。/** * Abstract class for defining any [[org.apache.spark.streaming.dstream.InputDStream]] * that has to s原创 2020-09-05 17:06:21 · 789 阅读 · 0 评论 -
sparkstreaming-2 sparkstreaming之DStream
sparkstreaming之DStreamDStream概念DStream中batch的划分及batch和RDD的关系SparkStreaming处理流程Dstream算子Input DStreamTransformations DStreamOutput DStreamDStream概念DStream(Discretized Stream)作为Spark Streaming的基础抽象,它代表持续性的数据流。数据流来源这些数据流既可以通过外部输入源赖获取,也可以通过现有的Dstream的tra原创 2020-09-05 01:07:36 · 463 阅读 · 0 评论 -
sparkstreaming-1 sparkstreaming基础架构
sparkstreaming基础架构sparkstreaming简介sparkstreaming架构流程sparkstreaming程序入口sparkstreaming简介SparkStreaming是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处原创 2020-09-03 14:33:06 · 191 阅读 · 0 评论 -
spark scala求PV,UV,topN
spark scala求PV,UV,topN数据格式求PV(page view)求UV(user view)求topN(URL访问量前N位)pom依赖数据格式194.237.142.21 - - [18/Sep/2013:06:49:18 +0000] "GET /wp-content/uploads/2013/07/rstudio-git3.png HTTP/1.1" 304 0 "-" "Mozilla/4.0 (compatible;)"183.49.46.228 - - [18/Sep/201原创 2020-08-12 12:13:01 · 421 阅读 · 0 评论 -
spark-6 spark运行架构和任务调度
spark运行架构和任务调度spark运行架构spark任务调度基于wordcount程序剖析spark任务的提交、划分、调度流程spark运行架构简单来讲:driver端划分任务,向资源管理器发送申请资源,executor向driver端(不是MAster)申请task,负责执行任务Driver端向资源管理器Master(可能是HMaster或者yarn的NodeManager)发送注册和申请计算资源的请求Master通知对应的worker节点启动executor进程(计算资源)e原创 2020-08-06 14:20:26 · 312 阅读 · 0 评论 -
spark-5 DAG图和stage
DAG图和stage的划分DAGstage为什么要划分stage如何划分stagetaskSetstage和stage之间的联系DAGDAG(Directed Acyclic Graph)叫做有向无环图(有方向,无闭环),在spark中用不表示数据的流向。原始的RDD经过一系列的转换之后会生成DAG单词统计生成的DAGstagestage即spark任务的调度阶段一个job会被拆分成多组Task,每组task组成一个stage一个job对应多个stagestage分为2种类型Shu原创 2020-08-05 23:26:38 · 790 阅读 · 0 评论 -
spark-4 RDD
RDDRDD基本概念RDD五大属性A list of partitionsRDD创建方式RDD常见算子RDD的依赖关系RDD的缓存机制RDD的checkpoint机制RDD基本概念RDD是spark core的核心,是spark的基本数据抽象,它代表一个不可变、可分区、里面元素可并行计算的集合RDD(Resilent Distributed Dataset)也称为弹性分布式数据集,是spark中最基本的数据抽象。它具有以下特点Dataset:表示一个集合,用来存储数据Distributed :原创 2020-08-04 18:12:25 · 284 阅读 · 0 评论 -
spark join
spark join写在前面,读后感Join背景介绍Join使用的结论Join常见分类&实现机制Hash JoinBroadcast Hash JoinShuffle Hash JoinSort-Merge Join结论:如何优化写在前面,读后感spark支持3种join:两种hash join应用与小表join大表sort-merge join应用与大表join大表hash join类似hadoop的map joinsort-merge join类似于haddop的reduce jo转载 2020-07-30 13:35:38 · 268 阅读 · 0 评论 -
Spark RDD 分区数
Spark RDD 分区数基础知识本地模式伪集群模式其他模式产生rdd的几种方式:通过scala 集合方式parallelize生成rdd通过textFile方式生成的rdd从HBase的数据表转换为RDD通过获取json(或者parquet等等)文件转换为DataFrameSpark Streaming获取Kafka消息对应的分区数基础知识spark.default.parallelism:(默认的并发数)= 2当配置文件spark-default.conf中没有显示的配置,则按照如下规则取值:本转载 2020-07-29 10:45:56 · 820 阅读 · 0 评论 -
spark-3 spark任务提交方式和Demo
spark任务提交方式和Demospark任务提交方式普通提交模式(指定活着的Master)高并发提交模式(集群有多个Master)spark-shell之单词统计spark-shell读取本地文件,本地运行spark-shell读取HDFS文件,本地运行spark-shell读取HDFS文件,集群运行IDEA之单词统计spark任务提交方式普通提交模式(指定活着的Master)bin/spark-submit \--class org.apache.spark.examples.SparkPi \原创 2020-07-28 13:15:17 · 1135 阅读 · 0 评论 -
spark IDEA开发sparkpom依赖
<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.3.3</version> </dependency></dependencies> &原创 2020-07-27 16:06:44 · 1407 阅读 · 0 评论 -
spark spark整合HDFS
spark整合HDFSSpark整合HDFSSpark整合HDFSspark整合HDFS之后,指定文件路径时,不再需要制定服务器名和端口号。直接以/开头即可访问根路径。在node01上修改配置文件vim spark-env.shexport HADOOP_CONF_DIR=/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop分发到其他节点sudo scp spark-env.sh node02:/install/spark/confsudo s原创 2020-07-27 15:09:20 · 661 阅读 · 0 评论 -
spark-2 spark集群架构
spark集群架构spark集群架构DriverApplicationClusterManagerMasterExecutorTaskspark集群架构Driver执行客户端写好的main方法,Driver端可能在客户端(本地模式)也可能在集群上Driver会构建好SparkContext,它是所有程序的入口Application本身就是一个应用程序,它包含了客户端的代码和任务运行资源信息ClusterManager资源调度角色,在不同的平台ClusterManager的身份不同原创 2020-07-26 14:36:36 · 345 阅读 · 0 评论 -
spark 处理业务,使用spark比MR快的原因
处理业务,使用spark比MR快的原因前言内存&硬盘MapReduceSparkspark DAG任务划分减少了不必要的shuffle资源申请粒度:进程&线程MapReduceSpark多任务计算示例前言从官网上看,使用spark处理业务要比MR快100倍左右。原因主要有三点:运算资源:内存&硬盘根本原因:spark DAG任务划分减少了不必要的shuffle资源申请粒度:进程&线程内存&硬盘注意:MR和spark最终的shuffle阶段(如果有原创 2020-07-19 15:28:42 · 1210 阅读 · 0 评论 -
Spark-1 spark概念
Spark框架基础spark概念spark四大特性速度快易用性通用性兼容性spark概念spark是针对于大规模数据处理的统一分析引擎(注意:spark本身不负责存储)spark是在hadoop的基础上改造的,spark基于MR算法实现分布式计算,拥有 hadoop MR所具有的有点。但不同与MR的是,spark的job中间输出结果可以保存在内存中,从而不再需要在中间读取HDFS。因此spark能更好的适用于属于挖掘和机器学习等需要迭代的MR算法spark四大特性速度快spark的计算速原创 2020-07-13 08:13:15 · 235 阅读 · 0 评论
分享