![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 65
莫叫石榴姐
云淡风轻一轮江月明
展开
-
SparkSql之数据的读取和保存
目录0 引言1 加载数据2 保存数据3 Parquet4 JSON4 CSV5 MySQL6 Hive0 引言SparkSQL提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API,根据不同的参数读取和保存不同格式的数据,SparkSQL默认读取和保存的文件格式为parquet。1 加载数据spark.read.load 是加载数据的通用方法scala> spark.read.csv format jdbc json原创 2021-08-19 23:05:57 · 5529 阅读 · 0 评论 -
读懂 Spark Shuffle
1. HashShuffleManagershuffle write 阶段,主要就是在一个 stage 结束计算之后,为了下一个 stage 可以执行 shuffle 类的算子(比如 reduceByKey),而将每个 task 处理的数据按 key 进行“划分”。所谓“划分”,就是对相同的 key 执行 hash 算法,从而将相同 key 都写入同一个磁盘文件中,而每一个磁盘文件都只属于下游 stage 的一个 task。在将数据写入磁盘之前,会先将数据写入内存缓冲中,当内存缓冲填满之后,才会溢写到磁原创 2021-08-12 23:09:36 · 707 阅读 · 0 评论 -
读懂Spark调度系统【数据不动代码动】
目录1 Spark任务调度系统的基本概念2 调度系统中的核心组件及原理2.1. DAGScheduler2.2 SchedulerBackend2.3 TaskScheduler3 小 结1 Spark任务调度系统的基本概念一个Spark应用程序包括Job、Stage以及Task三个概念: Job是以Action方法为界,遇到一个Action方法则触发一个Job; Stage是Job的子集,以RDD宽依赖(即Shuffle)为界,遇到Shuffle做一...原创 2021-08-08 14:36:58 · 609 阅读 · 0 评论 -
Spark之RDD与DataFrame的区别与理解
1.RDD是Spark对于分布式数据模型的抽象,DF是带数据模式的结构化分布式数据集,类似于传统数据库中的一张表,RDD不带数据模式或者说是泛型的 2.RDD API的执行引擎是Spark Core,其Spark Core的本质是负责任务的调度、计算、及存储;DF API优化引擎是SparkSQL,包括Catalyst执行过程优化和Tungsten数据结构优化。两者API的区别在于一个提供标量算子一个高阶算子和两者底层优化引擎不一致。 3.之前子框架如Streaming,mlib,graph都是采用RD原创 2021-08-04 19:43:12 · 1073 阅读 · 0 评论 -
读懂Spark存储系统
Spark 存储系统用于存储 3 个方面的数据,分别是 RDD 缓存、Shuffle 中间文件、广播变量。我们一个一个来说。RDD 缓存指的是将 RDD 以缓存的形式物化到内存或磁盘的过程。对于一些计算成本和访问频率都比较高的 RDD 来说,缓存有两个好处:一是通过截断 DAG,可以降低失败重试的计算开销;二是通过对缓存内容的访问,可以有效减少从头计算的次数,从整体上提升作业端到端的执行性能。而要说起 Shuffle 中间文件,我们就不得不提 Shuffle 这个话题。在很多场景中,Shuffle原创 2021-08-01 21:42:14 · 1888 阅读 · 2 评论 -
Spark读取TDengine
Spark+TDengine use process1. Installation of TDenginePlease refer to the official document:www.taosdata.com/cn/document…2. Establish test library and test table in TDenginetaos> create database test;taos>use test;#Here we create a table th原创 2021-04-25 16:56:58 · 607 阅读 · 1 评论 -
Spark读取hive表数据并将处理的数据写入HBase
package com.nbdpt.work4_hive2hbase2019import com.nbdpt.util.BaseUtilimport org.apache.hadoop.hbase.client.{ConnectionFactory, Get, Put}import org.apache.hadoop.hbase.io.ImmutableBytesWritableimport org.apache.hadoop.hbase.mapreduce.TableOutputFormat.原创 2021-04-25 15:33:13 · 1137 阅读 · 0 评论 -
Spark读写数据demo
读HBase数据import org.apache.hadoop.hbase.HBaseConfigurationimport org.apache.hadoop.hbase.mapreduce.TableInputFormatimport org.apache.hadoop.hbase.util.Bytesimport org.apache.spark._object HbaseSparkRead { def main(args: Array[String]): Unit = {原创 2021-04-25 11:36:33 · 238 阅读 · 0 评论 -
Structured Streaming demo
package com.unistack.tamboo.compute.process.impl; import com.alibaba.fastjson.JSONArray;import com.google.common.collect.Maps;import com.unistack.tamboo.compute.process.StreamProcess;import org.apache.kafka.clients.consumer.ConsumerRecord;import o.原创 2021-04-25 11:08:52 · 174 阅读 · 0 评论 -
Spark:RDD数据分区数量总结(并行化集合parallelize与外部数据集textFile)
目录1、创建RDD2、RDD分区有关操作2.1、查看分区方式2.2、查看分区数2.3、查看不同分区内的数据2.4、重新分区2.5、设置分区数3、分区数3.1、并行化集合3.2、外部数据集textFile4、新版API中FileInputFormat的分片1、创建RDDSpark提供了两种方式创建RDD: 读取外部数据集,如SparkContext.textFile 在驱动器程序中对一个集合进行并行化,如SparkContext.para...转载 2021-04-21 15:27:47 · 1109 阅读 · 0 评论 -
Spark RDD 分区数计算详解
基础知识spark.default.parallelism:(默认的并发数)= 2当配置文件spark-default.conf中没有显示的配置,则按照如下规则取值:1、本地模式(不会启动executor,由SparkSubmit进程生成指定数量的线程数来并发): spark-shell spark.default.parallelism = 1 spark-shell --master local[N] spark.default.parallel...转载 2021-04-21 15:18:00 · 792 阅读 · 0 评论 -
从spark.default.parallelism参数来看Spark并行度、并行计算任务概念
1 并行度与分区概念并行度:Spark作业中,各个stage的task数量,就代表Spark作业在各个阶段(stage)的并行度输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入切片,称为InputSplit,注意InputSplit不能跨越文件。随后将为这些输入切片生成具体的Task。InputSplit与Task是一一.原创 2021-04-18 20:49:40 · 6398 阅读 · 3 评论 -
读懂Spark广播变量
1 如何理解广播变量对指定列表中给定的单词计数。val dict = List(“spark”, “tune”)val words = spark.sparkContext.textFile(“~/words.csv”)val keywords = words.filter(word => dict.contains(word))keywords.map((_, 1)).reduceByKey(_ + _).collect按照这个需求,同学小 A 实现了如上的代码,一共有 4 行,原创 2021-04-17 15:15:41 · 788 阅读 · 1 评论 -
spark groupbykey、join、cogroup算子的区别
区别: groupbykey:按key进行聚合,同一个RDD中进行聚合。理解为一个表中进行group by cogroup:多个RDD进行group by(聚合)。理解为两张表中做group by join;RDD之间的连接操作。相当于SQL中的join操作 cogroup与groupbykey的区别是groupbykey是一个RDD中做聚合(同一个表中),cogroup是不同RDD中做聚合(分组),理解为两个表中。cogroup与join的区别官网对join和cogroup解释cog原创 2021-03-17 17:44:40 · 811 阅读 · 0 评论 -
错误信息:ERROR StreamMetadata:Error writing stream metadata StreamMetadata...
错误信息:ERRORStreamMetadata:ErrorwritingstreammetadataStreamMetadata...2021-03-04 12:44:36 ERROR StreamMetadata:91 - Error writing stream metadata StreamMetadata(560a0eee-4f40-4754-ae1b-30f3763e8214) to C:/Users/Dandan/AppData/Local/Temp/temporary-e65...原创 2021-03-04 18:29:56 · 732 阅读 · 1 评论 -
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
windows下运行hadoop的程序报错java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.这是因为windows环境变量不兼容的原因。这里需要配置hadoop windows环境、JDK环境winutils.exe是在Windows系统 上需要的hadoop调试环境工具,里面包含一些在Windows系统下调试hadoop、spark所需要的基本的工具类.原创 2021-03-04 18:25:40 · 4462 阅读 · 2 评论 -
Spark:Caused by: java.lang.ClassNotFoundException: scala.Product$class解决
今天使用Spark进行RDD操作,当我开始运行程序时,出现Caused by: java.lang.ClassNotFoundException: scala.Product$class,我最后检查了下,发现我项目里面的spark-core版本和整个项目的scala版本不一致所导致的。我用Maven构建的项目,pom.xml文件部分结构如下:由于我之前出错的原因是:spark-core依赖我写的 spark-core_2.11 最后导致运行出错,这里的artifactId中的spark-core转载 2021-02-28 21:31:10 · 2334 阅读 · 0 评论 -
spark运行时出现错误Caused by: java.lang.ClassNotFoundException: org.apache.spark.rdd.RDD
1 报错信息Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$ at Demo1_QuickStart$.main(Demo1_QuickStart.scala:7) at Demo1_QuickStart.main(Demo1_QuickStart.scala)Caused by: java.lang.ClassNotFoundException: org.a原创 2021-02-27 20:43:53 · 5477 阅读 · 0 评论 -
读懂Sort Based Shuffle溢写过程
1 溢写时机分析(1)maybeSpill方法 protected def maybeSpill(collection: C, currentMemory: Long): Boolean = { var shouldSpill = false //buffer中每插入32条记录就开始检测(或每32次就开始检测),并且当前估算的buffer内存达到了spill的内存阈值。currentMemory:当前估算的buffer或map的内存。myMemoryThres原创 2021-02-25 18:03:46 · 579 阅读 · 2 评论 -
SparkRDD并行度与分区算法源码研究
0 引 言1 RDD并行度与分区1.1 概念解释默认情况下,Spark可以将一个作业切分多个任务后,发送给Executor节点并行计算,而能够并行计算的任务数量我们称之为并行度。这个数量可以在构建RDD时指定。记住,这里的并行执行的任务数量,并不是指的切分任务的数量,不要混淆了。makeRDD的源码val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")val sparkContext...原创 2021-01-09 19:34:54 · 566 阅读 · 0 评论 -
SparkSQL代码开发模板
0 数据准备student.txt字段从左到右依次代表: 学号 学生姓名 学生性别 学生出生年月 学生所在班级 108 丘东 男 1977-09-01 95033 105 匡明 男 1975-10-02 95031 107 王丽 女 1976-01-23原创 2020-12-29 15:43:40 · 292 阅读 · 0 评论 -
一文带你全面了解Spark任务调度机制
0 Spark 任务调度机制在工厂环境下,Spark集群的部署方式一般为YARN-Cluster模式,之后的内核分析内容中我们默认集群的部署方式为YARN-Cluster模式。1 Spark任务提交流程Spark YARN-Cluster模式下的任务提交流程,如下图所示:标YARN-Cluster任务提交流程题...原创 2020-12-05 21:38:40 · 501 阅读 · 0 评论 -
读懂Spark分布式数据集RDD
SparkRDD是学习熟悉Spark的基本概念,Spark编程的核心也是围绕RDD展开,因此了解RDD的概念至关重要,他是spark基本数据的抽象,是spark的基本数据结构,是spark的基本对象。本文主要也是讲解了spark RDD的基本概念及其创建方法。原创 2020-08-19 00:34:54 · 935 阅读 · 2 评论