spark
文章平均质量分 78
GOD_WAR
喜欢钻研大数据、python、机器学习、人工智能...
展开
-
SparkSQL——各区域热门商品TOP3
各区域热门商品TOP3原创 2022-06-17 15:46:57 · 1961 阅读 · 0 评论 -
SparkSql 3.0 UDAF 求和,求平均
使用spark sql 3.0版本自定义UDFA ,3.0版本之前 extends UserDefinedAggregateFunction 已经过时新方法如下代码:代码中自定义了求和,求平均package com.cy.sparkimport org.apache.log4j.{Level, Logger}import org.apache.spark.rdd.RDDimport org.apache.spark.sql.expressions.{Aggregator, Mu..原创 2022-05-10 16:44:39 · 947 阅读 · 0 评论 -
spark中excutor的个数、内存大小、core的个数、task的个数、分区的个数、集群的资源情况等的关系
一、Spark性能调优之资源分配大体上这两个方面:core memory(1)、分配哪些资源? executor、core per executor、memory per executor、driver memory(2)、在哪里分配这些资源? 在我们在生产环境中,提交spark作业时,用的spark-submit shell脚本,里面调整对应的参数/usr/local/spark/bin/spark-submit \--class cn.spark.spa...原创 2021-09-13 08:05:18 · 4588 阅读 · 0 评论 -
Spark中的Spark Shuffle详解
Shuffle简介Shuffle描述着数据从map task输出到reduce task输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下,reduce task需要跨节点去拉取其它节点上的map task结果。这一过程将会产生网络资源消耗和内存,磁盘IO的消耗。通常shuffle分为两部分:Map阶段的数据准备和Reduce阶段的数据拷贝处理。一原创 2021-05-31 16:31:42 · 971 阅读 · 0 评论 -
使用SparkSQL的电影分析
项目介绍数据集介绍使用MovieLens的名称为ml-25m.zip的数据集,使用的文件时movies.csv和ratings.csv,上述文件的下载地址为:http://files.grouplens.org/datasets/movielens/ml-25m.zip movies.csv 该文件是电影数据,对应的为维表数据,大小为2.89MB,包括6万多部电影,其数据格式为[movieId,title,genres],分别对应[电影id,电影名称,电影所属分类],样例数据如下所原创 2021-05-15 16:42:20 · 2154 阅读 · 0 评论 -
hive on spark 配置 和 spark on hive
Hive引擎简介Hive引擎包括:默认MR、tez、sparkHive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。Spark on Hive : Hive只作为存储元数据,Spark负责SQL解析优化,语法是SparkSQL语法,Spark负责采用RDD执行。HiveonSpark配置1)兼容性说明注意:官网下载的Hive3.1.2和Spark3.0.0默认是不兼容的。因为Hive...原创 2021-03-16 20:57:30 · 3997 阅读 · 0 评论 -
spark yarn模式提交任务不成功(application state: ACCEPTED)
问题详情 电脑8G,目前搭建3节点的spark集群,采用YARN模式。 master分配2G,slave1分配1G,slave2分配1G。(在安装虚拟机时) exportSPARK_WORKER_MERMORY=1g (在spark-env.sh)export JAVA_HOME=/usr/local/jdk/jdk1.8.0_60 (必须写)export SCALA_HOME=/usr/local/scala/scala-2.10.5 (必须写...原创 2021-03-10 21:41:03 · 3840 阅读 · 0 评论 -
spark 1.6 和spark 2.0读写csv文件
如果是spark1.6.0请添加maven: <dependency> <groupId>com.databricks</groupId> <artifactId>spark-csv_2.10</artifactId> <version>1.4.0</version> <scope>compile&...原创 2021-01-17 18:51:20 · 394 阅读 · 0 评论 -
Structured Streaming入门实例
Structured Streaming入门实例Structured Streaming是Spark2.4版本推出的新的实时流处理计算。相比Spark Streaming具有更低的延迟。具体信息请看:Structured Streaming官方介绍示例一:words countScala代码package com.testimport org.apache.log4j.{Level, Logger}import org.apache.spark.sql.SparkSession原创 2020-12-06 14:36:33 · 306 阅读 · 0 评论 -
Structured Streaming 案例初体验
Structured Streaming程序基本步骤编写Structured Streaming程序的基本步骤是:1.创建SparkSession实例;2.创建DataFrame表示从数据源输入的每一行数据;3.DataFrame转换,类似于RDD转换操作;4.创建StreamingQuery开启流查询;5.调用StreamingQuery.awaitTermination()方法,等待流查询结束。Structured Streaming操作示例这里还是用统计单词个数的示例,来展示如何原创 2020-11-02 14:41:15 · 564 阅读 · 0 评论 -
Java spark parallelizePairs Incompatible equality constraint: String and T1
Java spark 调用spark 算子 parallelizePairs 报错:Incompatible equality constraint: String and T1 List<Tuple2<String, Double>> arr2 = Arrays.asList( new Tuple2<String, Double>("u1", 20.01), new Tuple.原创 2020-10-28 16:44:38 · 2972 阅读 · 1 评论 -
Structured Streaming 分析
StructedStreaming 流程分析导言Spark在2.*版本后加入StructedStreaming模块,与流处理引擎Sparkstreaming一样,用于处理流数据。但二者又有许多不同之处。Sparkstreaming首次引入在0.*版本,其核心思想是利用spark批处理框架,以microbatch(以一段时间的流作为一个batch)的方式,完成对流数据的处理。StructedStreaming诞生于2.*版本,主要用于处理结构化流数据,与Sparkstreaming不同的是St原创 2020-11-04 10:55:09 · 873 阅读 · 0 评论 -
IDEA 运行spark 报数组越界异常 java.lang.ArrayIndexOutOfBoundsException: 10582
运行环境: Win10 + IDEA + spark2.4 +JDK8程序运行到sc.textFile("E:/tmp/test.txt");报错:java.lang.ArrayIndexOutOfBoundsException: 10582报了数组越界异常,经检查是paranamer造成的(网上有同行说JDK8得使用paranamer版本2.8以上),在工程下导入paranamer-2.8.jar就好了。Maven工程:<dependency> ...原创 2020-09-17 17:25:33 · 1699 阅读 · 1 评论 -
spark streaming 处理kafka中积压的数据
spark streaming冷启动处理kafka中积压的数据因为首次启动JOB的时候,由于冷启动会造成内存使用太大,为了防止这种情况出现,限制首次处理的数据量spark.streaming.backpressure.enabled=truespark.streaming.backpressure.initialRate=200举个例子:#!/bin/shTaskName="funnel"UserName="hadoop"cd`dirname$0`nohup sudo -u..原创 2020-08-20 17:25:09 · 1765 阅读 · 0 评论 -
Spark Streaming Backpressure反压机制
Spark Streaming Backpressure分析为什么引入Backpressure默认情况下,Spark Streaming通过Receiver以生产者生产数据的速率接收数据,计算过程中会出现batch processing time > batch interval的情况,其中batch processing time 为实际计算一个批次花费时间, batch interval为Streaming应用设置的批处理间隔。这意味着Spark Streaming的数据接收速率高于.原创 2020-08-19 22:29:50 · 530 阅读 · 0 评论 -
Spark Kafka 基于Direct自己管理offset
1、SparkStreaming中使用Kafka的createDirectStream自己管理offset在Spark Streaming中,目前官方推荐的方式是createDirectStream方式,但是这种方式就需要我们自己去管理offset。目前的资料大部分是通过scala来实现的,并且实现套路都是一样的,我自己根据scala的实现改成了Java的方式,后面又相应的实现。Direct Approach 更符合Spark的思维。我们知道,RDD的概念是一个不变的,分区的数据集合。我们将kafk.原创 2020-08-01 11:17:29 · 245 阅读 · 0 评论 -
PySpark 的背后原理
Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等。总体来说,Spark是由JVM语言实现,会运行在JVM中。然而,Spark除了提供Scala/Java开发接口外,还提供了Python、R等语言的开发接口,为了保证Spark核心实现的独立性,Spark仅在外围做包装,实现对不同语言的开发支持,本文主要介绍Python Spark的实现原理,剖析pyspark应用程序是如何运行起来的。原创 2020-06-24 11:51:14 · 423 阅读 · 0 评论 -
Flink VS Spark 部署模式对比
主要对Flink和Spark集群的standalone模式及on yarn模式进行分析对比。Flink与Spark的应用调度和执行的核心区别是Flink不同的job在执行时,其task同时运行在同一个进程TaskManager进程中;Spark的不同job的task执行时,会启动不同的executor来调度执行,job之间是隔离的。Standalone模式Flink 和Spark均支持standalone模式(不依赖其他集群资源管理和调度)的部署,启动自身的Master/Slave架构的集群管.原创 2020-06-23 09:04:08 · 622 阅读 · 0 评论 -
使用ScalaSocket编程,模拟简单的RPC通信
Scala的socket编程也是调用的java的api,所以基本上和java的代码大同小异。实现功能大体如下:客户端发送一个序列化参数,里面以空格分割几个参数,在服务端进行接收,并分割字符串,获取到一个字符串数组,然后对其进行模式匹配,返回不同的处理结果,写入到输出流中,客户端获取到返回的结果并打印。客户端代码:package MyResourceAndMyNodeManager import java.io.{ObjectInputStream, ObjectOutputStream.原创 2020-05-14 14:18:46 · 266 阅读 · 0 评论 -
Spark SQL 架构简介
Spark SQL 架构简介简单看一下Spark SQL 的架构。下面这张图描述了一条 SQL 提交之后需要经历的几个阶段,结合这些阶段就可以看到在哪些环节可以做优化。很多时候,做数据仓库建模的同学更倾向于直接写 SQL 而非使用 Spark 的 DSL。一条 SQL 提交之后会被 Parser 解析并转化为 Unresolved Logical Plan。它的重点是 Lo...原创 2020-02-29 17:37:10 · 868 阅读 · 0 评论 -
spark Executor启动过程分析
前言本篇文章将以问答的方式对Executor的启动进行分析。1. executor在什么时候开始启动?新app的加入和集群资源的变动将调用到Master的schedule方法, 这个时候会进行startExecutorsOnWorkers()进行executor的调度和启动。 (资源申请的是在 appclient 的 registerApplication 消息中)2.Execut...原创 2020-02-25 15:48:29 · 248 阅读 · 0 评论 -
Apache Spark 3.0 动态分区裁剪(Dynamic Partition Pruning)
Apache Spark 3.0 动态分区裁剪(Dynamic Partition Pruning)静态分区裁剪(Static Partition Pruning)用过Spark的同学都知道,SparkSQL 在查询的时候支持分区裁剪,比如我们如果有以下的查询:SELECT * FROM Sales_iteblogWHERE day_of_week = 'Mon'...转载 2019-11-14 10:32:12 · 1088 阅读 · 0 评论 -
Apache Spark 3.0 预览版正式发布,多项重大功能发布
Apache Spark 3.0 预览版正式发布,多项重大功能发布早上 06:53(2019年11月08日 06:53) 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 ApacheSpark 3.0预览版正式发布,这个版本主要是为了对即将发布的 ApacheSpark 3.0版本进行大规模社区测试。无论是从 API 还是从功能上来说,这个预览版都不是一个稳定的版本,它...转载 2019-11-14 10:31:43 · 2455 阅读 · 0 评论 -
阿里云Spark Shuffle的优化
Spark Shuffle介绍 Smart Shuffle设计 性能分析Spark Shuffle流程Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidation机制 Spark 0.9 引入ExternalAppendOnlyMap Spark 1.1 引入Sort B...原创 2019-11-07 17:48:38 · 185 阅读 · 0 评论 -
Spark的join什么情况下可以避免shuffle?
Spark的join操作可能触发shuffle操作。shuffle操作要经过磁盘IO,网络传输,对性能影响比较大。本文聊一聊Spark的join在哪些情况下可以避免shuffle过程。1 DataFrame/Dataset的join如何避免shuffle针对Spark DataFrame/DataSet的join,可以通过broadcast join和bucket join来避免shuff...原创 2019-10-17 20:30:39 · 2368 阅读 · 1 评论 -
spark submit参数及调优
spark submit参数介绍你可以通过spark-submit --help或者spark-shell --help来查看这些参数。使用格式:./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode&g...原创 2019-10-16 16:41:12 · 1300 阅读 · 0 评论 -
使用 Kafka + Spark Streaming + Cassandra 构建数据实时处理引擎
Apachekafka是一个可扩展,高性能,低延迟的平台,允许我们像消息系统一样读取和写入数据。我们可以很容易地在 Java 中使用kafka。sparkStreaming是 Apachespark的一部分,是一个可扩展、高吞吐、容错的实时流处理引擎。虽然是使用 Scala 开发的,但是支持 Java API。ApacheCassandra是分布式的 NoSQL 数据库。...转载 2019-11-14 10:32:47 · 426 阅读 · 0 评论 -
Spark 简介笔记整理
1 Spark设计目的设计的目的就是能快速处理多种场景下的大数据问题,能高效挖掘大数据中的价值,从而为业务发展提供决策支持。2 Spark特点Spark特点:1.轻量级快速处理Spark通过减少磁盘IO来达到性能的提升,它们将中间处理数据全部放到了内存中。Spark使用了RDD(Resilient Distributed Datasets)数据抽象,这允许它可以在内存中存储数...原创 2019-10-08 21:20:43 · 435 阅读 · 0 评论 -
Spark SQL从入门到精通
发家史熟悉spark sql的都知道,spark sql是从shark发展而来。Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业(辅以内存列式存储等各种和Hive关系不大的优化);同时还依赖Hive Metastore和Hive SerDe(用于兼容现有的各种Hive...原创 2019-10-08 20:56:02 · 160 阅读 · 0 评论 -
GraphX与GraphLab、Pregel的对比
分布式批同步BSPPregel、GraphLab、GraphX都是基于BSP(Bulk Synchronous Parallel)模式,即整体同步并行。一次计算过程由一系列全局超步组成,每一个超步由并发计算、通信和同步三个步骤组成。从垂直上看,一个程序由一系列串行的超步组成。从水平上看,在一个超步中,所有的进程并行执行局部计算。BSP最大的好处是编程简单,但在某些情况下BSP运算的性能非常差,...原创 2019-09-19 14:05:53 · 1211 阅读 · 0 评论 -
Graphx图算法介绍
本文介绍的Graphx的图上算法都是基于Pregel模型实现的。用户图计算的场景:基于度分布的中枢节点发现基于最大连通图的社区发现(聚类)基于三角形计数的关系衡量基于随机游走的用户属性传播(聚类)1. 数三角形Graphx的数三角形算法TriangleCount用于统计每个顶点所在的三角形个数。1.1 简介对网络图中进行三角形个数计数可以根据三角形数量反应网络中的...原创 2019-09-18 22:29:36 · 3723 阅读 · 0 评论 -
使用Spark Graphx 探索你不知道的金庸武侠世界
GitHub地址:https://github.com/weijie-he/jinyong一、缘起2018年10月30日,金庸在香港逝世,享年94岁。知道这个消息之后,我的情绪很低落,讲台上老师在讲什么仿佛也听不见了,脑海中一直在回想着先生写过的关于离别的句子。程英道:“三妹,你瞧这些白云聚了又散,散了又聚,人生离合,亦复如斯。你又何必烦恼?” 她话虽如此说,却也忍不住流下泪来。...原创 2019-09-18 22:26:04 · 577 阅读 · 0 评论 -
Hive On Spark安装配置详解及填坑指南
简介本文主要记录如何安装配置Hive on Spark,在执行以下步骤之前,请先确保已经安装Hadoop集群,Hive,MySQL,JDK,Scala,具体安装步骤不再赘述。背景Hive默认使用MapReduce作为执行引擎,即Hive on mr。实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark。由于MapReduc...原创 2019-09-11 22:44:52 · 589 阅读 · 0 评论 -
使用spark-redis组件访问云数据库Redis
本文演示了在Spark Shell中通过spark-redis组件读写Redis数据的场景。所有场景在阿里云E-MapReduce集群内完成,Redis使用阿里云数据库Redis。创建服务我们以EMR-3.21.0版本和Redis 4.0为例。EMR集群安装的Spark版本是2.4.3,我们需要使用对应的Spark-Redis 2.4版本,该组件可以支持Redis 2.9.0以上版本。...原创 2019-09-08 21:18:30 · 791 阅读 · 0 评论 -
深入理解Spark 2.1 Core (十二):TimSort 的原理与源码分析
在博文《深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析 》中我们提到了:使用Sort等对数据进行排序,其中用到了TimSort这篇博文我们就来深入理解下TimSort理解timsort看完视频后也许你会发现TimSort和MergeSort非常像。没错,你就会发现它其实只是对归并排序进行了一系列的改进。其中有一些是很聪明的,而也有一些是相...原创 2019-09-07 13:54:57 · 157 阅读 · 0 评论 -
深入理解Spark 2.1 Core (十一):Shuffle Reduce 端的原理与源码分析
在《深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析 》我们讲解了,以传统Hadoop MapReduce类似的从HDFS中读取数据,再到rdd.HadoopRDD.compute便可以调用函数f,即map中的函数的过程。在《深入理解Spark 2.1 Core (十):Shuffle map端的原理与源码分析》我们深入讲解了sorter.insertAll...原创 2019-09-07 13:50:03 · 283 阅读 · 0 评论 -
深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析
在上一篇《深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析》提到经过迭代计算后,SortShuffleWriter.write中: // 根据排序方式,对数据进行排序并写入内存缓冲区。 // 若排序中计算结果超出的阈值, // 则将其溢写到磁盘数据文件 sorter.insertAll(records)我们先来宏观的了...原创 2019-09-07 13:47:04 · 190 阅读 · 0 评论 -
深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析
在博文《深入理解Spark 2.1 Core (七):任务执行的原理与源码分析 》我们曾讲到过:Task有两个子类,一个是非最后的Stage的Task,ShuffleMapTask;一个是最后的Stage的Task,ResultTask。它们都覆盖了Task的runTask方法。我们来看一下ShuffleMapTask的runTask方法中的部分代码: var writer...原创 2019-09-07 13:44:55 · 805 阅读 · 0 评论 -
深入理解Spark 2.1 Core (八):Standalone模式容错及HA的原理与源码分析
第五、第六、第七篇博文,我们讲解了Standalone模式集群是如何启动的,一个App起来了后,集群是如何分配资源,Worker启动Executor的,Task来是如何执行它,执行得到的结果如何处理,以及app退出后,分配了的资源如何回收。但在分布式系统中,由于机器众多,所有发生故障是在所难免的,若运行过程中Executor、Worker或者Master异常退出了,那该怎么办呢?这篇博文,我们...原创 2019-09-07 13:43:03 · 220 阅读 · 0 评论 -
深入理解Spark 2.1 Core (七):任务执行的原理与源码分析
上篇博文《深入理解Spark 2.1 Core (六):资源调度的实现与源码分析》中我们讲解了,AppClient和Executor是如何启动,如何为逻辑上与物理上的资源调度,以及分析了在Spark1.4之前逻辑上资源调度算法的bug。这篇博文,我们就来讲讲Executor启动后,是如何在Executor上执行Task的,以及其后续处理。执行Task我们在《深入理解Spark 2.1 ...原创 2019-09-06 22:13:32 · 164 阅读 · 0 评论