Spark
一个不会写代码的小黑
君子之交淡如水,小人之交甘若醴。
展开
-
Spark 读取csv文件quote配置无效
在进行数据清洗时,使用spark 读取csv文件时,遭遇到数据列中存在 \n的字符原始数据:names“小红\n小明”解析后数据:index names1 小红2 小明我们想要的数据:index names1 “小红\n小明”在spark 读取时,会将\n当成换行 ,将数据读取成两行数据,而我们不需要将解析引号内的数据,所以我们需要配置 csv读取格式 .option("quote", "\""),然而只配置 q原创 2021-10-25 18:04:23 · 1379 阅读 · 0 评论 -
spark filter 堆栈溢出
spark sql filter 堆栈溢出 StackOverflowError 问题解决spark sql 堆栈溢出Caused by: java.lang.StackOverflowError at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:395) at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:557) at org.codeh原创 2021-01-20 14:34:20 · 1804 阅读 · 0 评论 -
在WIndows环境中本地运行spark程序,报以下错误
问题描述:在WIndows环境本地运行spark程序,报以下错误:…(null) entry in command string: null chmod 0644 …(后面是你的路径)下面是错误样例Driver stacktrace: at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1原创 2020-09-10 10:02:26 · 659 阅读 · 0 评论 -
Spark shuffle和mapreduce shuffle的区别
1.从整体功能上看,两者并没有大的差别。都是将 mapper(Spark 里是 ShuffleMapTask)的输出进行 partition,不同的 partition 送到不同的 reducer(Spark 里 reducer 可能是下一个 stage 里的 ShuffleMapTask,也可能是 ResultTask)。Reducer 以内存作缓冲区,边 shuffle 边 aggregat...原创 2019-04-01 15:57:54 · 3291 阅读 · 1 评论 -
Spark On Yarn的执行流程及应用场景
一、driver 运行在集群中(cluster模式)1、client 向 yarn 提交一个job2、ResouceManager 为该job在某个 NodeManager 上分配一个 ApplicationMaster,NM启动AppMaster,Appmaster 启动 driver3、ApplicationMaster 启动后完成初始化作业,driver 生成一系列task4、AM ...原创 2019-04-02 10:24:41 · 846 阅读 · 0 评论 -
MapReduce与Spark的shuffle的比较
对比方向MapReduceSparkHashcollect在内存中构造了一块数据结构用于map输出的缓冲区没有环形缓冲sortmap输出的数据排序map数据没有排序merge对磁盘上的多个spill文件最后进行合并成一个输出文件在map端没有merge过程,copy框架jettynetty或者直接socket流本地文件通过网络拖取数据...原创 2019-04-02 15:09:25 · 278 阅读 · 1 评论 -
Parquet存储格式
Parquet是一种列式存储格式,可用于Hadoop生态系统中的任何项目,无论选择何种数据处理框架,数据模型或编程语言。####特点:a、更高的压缩比parquet的gzip的压缩比率最高,若不考虑备份可以达到27倍。可能这也是spar parquet默认采用gzip压缩的原因吧。b、只读取需要的列,支持向量运算,能够获取更好的扫描性能跳过不符合条件的数据,只读取需要的数据,降低 IO ...原创 2019-04-26 17:48:46 · 1635 阅读 · 0 评论 -
spark 自定义分区
说明:将相同numPars分到一个分区class SouGouPartition(numPars : Int) extends Partitioner{ override def numPartitions: Int = numPars override def getPartition(key: Any): Int = { var code = key.hash...原创 2019-04-24 11:52:30 · 261 阅读 · 0 评论 -
cach、persist、checkpoint的区别
cache与persist的区别cache 底层调用的是 persist 方法,存储等级为: memory only,persist 的默认存储级别也是 memory only,persist 与 cache 的主要区别是 persist 可以自定义存储级别。哪些 RDD 需要 cache ? 会被重复使用的(但是)不能太大的RDD需要cache,cache 只使用 memory。persis...原创 2019-05-16 11:26:45 · 900 阅读 · 0 评论 -
kafka Drictor维护偏移量
Apache Spark 2.1.x以及spark-streaming-kafka-0-10使用新的的消费者API即异步提交API。你可以在你确保你处理后的数据已经妥善保存之后使用commitAsync API(异步提交 API)来向Kafka提交offsets。新的消费者API会以消费者组id作为唯一标识来提交offsets,将offsets提交到Kafka中。目前这还是实验性特性。strea...原创 2019-06-11 10:55:03 · 304 阅读 · 0 评论 -
spark优化
1、 性能调优1.1、 分配更多资源1.1.1、分配哪些资源?Executor的数量每个Executor所能分配的CPU数量每个Executor所能分配的内存量Driver端分配的内存数量1.1.2、在哪里分配这些资源?在生产环境中,提交spark作业时,用的spark-submit shell脚本,里面调整对应的参数:/usr/local/spark/bin/spark-sub...转载 2019-03-22 20:40:28 · 443 阅读 · 0 评论 -
Streaming消费Kafka数据的两种方式
1.receiver模式Receiver接收固定时间间隔的数据,放在Spark executors内存中操作,使用kafka高级API,自动维护偏移量,达到固定时间才能进行处理,效率低下,并且容易丢失数据。数据备份两次,保存到hdfs,每次使用须从hdfs读取,导致效率低下。如果数据量特别大的情况下,容量不够就会造成数据丢失。receiver通过WAL,设置本地存储,会存放到本地,保证数据不...转载 2019-03-20 14:12:27 · 1259 阅读 · 0 评论 -
广播变量和累加器的使用场景以及如何使用
广播变量和累加器的使用场景以及如何使用原创 2019-02-23 21:58:51 · 768 阅读 · 0 评论 -
spark特点及安装调试
spark特点1、快与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Apache Spark使用最先进的DAG调度程序,查询优化器和物理执行引擎,实现批处理和流数据的高性能2、便于使用Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。还支持交互式的Scala,...原创 2019-02-19 14:11:35 · 237 阅读 · 0 评论 -
spark任务提交的四个阶段和stage的流程
spark任务提交的四个阶段1、构建DAG用户提交的job将首先被转换成一系列RDD并通过RDD之间的依赖关系构建DAG,然后将DAG提交到调度系统;一个RDD描述了数据计算过程中的一个环节,而一个DAG包含多个RDD,描述了数据计算过程中的所有环节;一个spark application可以包含多个DAG,取决于具体有多少个action。DAG描述多个RDD的转换过程,任务执行时,可以...原创 2019-02-26 19:33:10 · 2948 阅读 · 0 评论 -
spark写sql语句范例
//创建一个sparkSession对象val sparkSession = SparkSession.builder() .appName("createDF2") .master("local") .getOrCreate()val rdd = sparkSession.sparkContext.textFile("c://data/person.txt")//整理数据,RO...原创 2019-03-02 21:58:24 · 2683 阅读 · 0 评论 -
DAG的生成
1、有向无环图DAG(Directed Acyclic Graph)叫做有向无环图,是一种不包含有向环的有向图。2、DAG的创建DAG描述多个RDD的转换过程,任务执行时,可以按照DAG的描述,执行真正的计算;DAG是有边界的:开始(通过sparkcontext创建的RDD),结束(触发action,调用runjob就是一个完整的DAG形成了,一旦触发action,就形成了一个完整的D...原创 2019-02-26 20:23:55 · 3852 阅读 · 0 评论 -
Spark RDD、DataFrame原理及操作详解
RDD是什么?RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。RDD内部可以有许多分区(partitions),每个分区又拥有大量的记录(records)。五个特征:dependencies:建立RDD的依赖关系,主要rdd之间是宽窄依赖的关系,具有窄依赖关系的rdd可以...转载 2019-02-26 21:11:19 · 1354 阅读 · 0 评论 -
spark streaming的工作原理与Dstrenm
spark streaming的原理对于Spark Core它的核心就是RDD,对于Spark Streaming来说,它的核心是DStream,DStream类似于RDD,它实质上一系列的RDD的集合,DStream可以按照秒数将数据流进行批量的划分。首先从接收到流数据之后,将其划分为多个batch,然后提交给Spark集群进行计算,最后将结果批量输出到HDFS或者数据库以及前端页面展示等官...翻译 2019-03-04 20:24:05 · 290 阅读 · 0 评论 -
RDD依赖关系
RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。一般有shuffle过程即宽依赖,无shuffle过程就窄依赖但是窄依赖也有可能产生数据在网络传输。2.1、窄依赖窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用任务可以在本地执行,不需要shuffle。...原创 2019-03-07 15:03:52 · 700 阅读 · 0 评论 -
tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapre
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.&lt;init&gt;()V from class org.apache.hadoop.mapred.FileInputFormat at org.apache.hado...原创 2019-03-07 15:06:27 · 3990 阅读 · 3 评论 -
Spark任务提交全流程(简述+全流程)
概略:1.Driver端启动SparkSubmit进程,启动后开始向Master进行通信,此时创建了一个对象(SparkContext),接着向Master发送任务消息2.Master接收到任务信息后,开始资源调度,此时会和所有的Worker进行通信,找到空闲的Worker,并通知Worker来拿取任务和启动相应的Executor3.Executor启动后,开始与Driver进行反向注册,...转载 2019-03-20 13:55:24 · 10728 阅读 · 4 评论 -
reduceByKey和foldByKey的区别
reduceByKeydef reduceByKey(func: (V, V) => V): RDD[(K, V)]对元素为kv对的RDD中key相同的元素的Value进行reduce操作示例scala> val a = sc.parallelize(List("dog", "cat", "owl", "gnu", "ant"), 2) a: org.apache.spa原创 2019-02-21 19:01:57 · 2002 阅读 · 0 评论