![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
文章平均质量分 73
九筒-
这个作者很懒,什么都没留下…
展开
-
【转载】Spark 分布式/单机执行代码认知纠正
Spark 分布式/单机执行代码认知纠正转载 2022-08-07 16:59:32 · 325 阅读 · 1 评论 -
Hive Explain 执行计划参数分析
执行计划codeexplain--your sql codeselect *from xxx.xxxx as xleft join yyy.yyyy as yon x.a=y.bgroup by c,dhaving eorder by flimit 1000 举例拿一个实际生产中的复杂sql为例,涉及多表join,开窗函数,子查询,多维分组聚合grouping sets的执行计划为例,可以看出:stage之间的依赖关系各个stage的执行计划sql语原创 2022-05-17 21:48:11 · 399 阅读 · 0 评论 -
sql/hql的代码积累与优化
在写数仓过程中,积累了一些sql代码优化技巧,总结分享一下(大多是hql代码)优化使用count(1) 替代 count(*)一、从执行效果来看count(1) and count():基本没差别count()包括了所有的列,相当于行数,在统计结果的时候,不会忽略NULLcount(1) and count(列名):count(1) 会统计表中的所有的记录数,不会忽略NULL,包含字段为null 的记录。count(列名) 会统计该列字段在表中出现的次数,会忽略字段为null 的情原创 2021-10-24 16:11:52 · 424 阅读 · 0 评论 -
Pyspark-数据导入任务从374min降到7min
数据量8000w,存储空间5G。使用Venus平台,将hive中的数据导入到后台Mysql中,采用Pyspark组件,通过参数调整将任务执行时间从374min降低到7min背景任务是在Venus平台上,将hive中增量数据(8000w条/天)导入到后台Mysql中,并实现每天例行化,但由于数据量过大,导致spark写入效率极低优化思路Pyspark代码from pyspark.sql import SparkSessionfrom pyspark import SparkContextimpo原创 2021-09-01 22:10:25 · 267 阅读 · 0 评论 -
【Spark源码】RDD shuffle溢写&归并排序
RDD shuffle溢写核心代码if (shouldSpill) { _spillCount += 1 logSpillage(currentMemory) //溢写,查看ExternalSorter.scala文件第239行 spill(collection) _elementsRead = 0 _memoryBytesSpilled += currentMemory releaseMemory() //溢写之后释放内存}分析代码步骤在sortshuffle原创 2021-05-15 19:17:51 · 446 阅读 · 0 评论 -
【Spark源码】RDD shuffle 读磁盘与写磁盘
RDD shuffleshuffle阶段涉及磁盘读写,以图示为例,紫色RDD与ShuffleRDD之间会进行磁盘读写操作,紫色RDD进行磁盘写操作,ShuffleRDD进行磁盘读操作写磁盘读磁盘核心代码//读磁盘 override def compute(split: Partition, context: TaskContext): Iterator[(K, C)] = { val dep = dependencies.head.asInstanceOf[ShuffleDepe原创 2021-05-15 17:37:50 · 479 阅读 · 0 评论 -
【Spark源码】RDD任务调度&任务执行
工具环境Intellij Idea 2018.03spark3.0.0<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.0.0</version> </d原创 2021-05-13 18:52:45 · 227 阅读 · 0 评论 -
【Spark】Spark Core学习笔记
Spark CoreSpark Core实现了Spark的基本功能,包括:任务调度,内存管理,错误回复,与存储系统交互等模块。其中包括三大数据结构:RDD:弹性分布式数据集累加器:分布式共享只写变量广播变量:分布式共享只读变量RDDRDD特性- - 源码RDD.scala文件,可以从makeRDD() -> RDD -> RDD.scala找到 * Internally, each RDD is characterized by five main properties:原创 2021-05-12 14:43:06 · 136 阅读 · 0 评论 -
【Spark源码】RDD阶段划分&任务划分
工具环境Intellij Idea 2018.03spark3.0.0<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.0.0</version> </d原创 2021-05-11 12:30:01 · 660 阅读 · 1 评论 -
【Spark源码】RDD序列化
RDD序列化序列化的目的是为了在网络中传输从计算的角度, 算子以外的代码都是在Driver 端执行, 算子里面的代码都是在 Executor 端执行。因此会导致算子内经常会用到算子外的数据,因此形成了闭包的效果。在调用算子外的数据时,数据需要在Driver和Executor中间通过网络进行传输,因此需要序列化工具环境Intellij Idea 2018.03spark3.0.0<dependencies> <dependency> &l原创 2021-05-10 17:23:46 · 147 阅读 · 0 评论 -
【Spark源码】RDD分区&RDD分区数据分配
RDD分区创建RDD时自定义分区数量根据计算机Core个数确定默认分区数量核心代码override def defaultParallelism(): Int = scheduler.conf.getInt("spark.default.parallelism", totalCores)首选SparkConf配置的spark.default.parallelism分区数量如果没有配置,则采用计算机的核心数量totalCores作为分区数量分析源码步骤程序- -分区源码入口原创 2021-05-08 20:28:18 · 235 阅读 · 1 评论 -
【Spark】部署环境&运行架构
部署环境Spark分为3种部署环境:Local本地模式Standalone独立部署模式基于Yarn混合部署模式几点补充:Standalone独立部署模式是经典的Master-Slaver模式,可由自身提供计算资源,无需其他框架提供资源Master和Slaver是针对Standalone的概念引入Yarn的原因:Spark主要是计算框架,而不是资源调度的框架配置Spark历史服务器的细节问题配置Spark历史服务器,需要在spark-env.sh中指定历史服务器日志存储路径(hdf原创 2021-05-07 17:24:38 · 144 阅读 · 0 评论 -
【Spark】适用场景&优缺点
Spark的适用场景需要快速处理大数据。Hadoop常用于解决高吞吐,批量处理,离线计算结果的业务场景,如果需要实时,即对数据处理速度有一定要求的,Hadoop显然不符合;Spark通过内存计算能力可以极大的提高大数据处理速度适用于需要多次操作特定数据集的应用场合数据量不大,但要求实时统计分析需求基于大数据的SQL查询、流式计算,图计算,机器学习的场景支持Java,Scala,Python,R语言的场景Spark的特点快速处理能力,基于内存易于使用,支持多种语言支持SQL查询,支持S原创 2021-05-06 22:56:47 · 6840 阅读 · 0 评论 -
Hive参数调优-处理数据倾斜问题实验对比
实验环境内存:16GBCPU:i5 4590Centos:6.8Hive:2.3.6实验数据数据量:100010key1:100000key2:10两个key相差5个数量级语句测试语句: select count(*) from test_skew group by key;测试的参数:set hive.map.aggr=false; 是否在map端进行joinset hive.groupby.skewindata=false;是否增加map来进行负载均衡实验结论有兴趣的原创 2021-04-19 23:17:07 · 871 阅读 · 0 评论 -
Centos6.8虚拟机关机后网卡变更解决方案
环境虚拟机:VM16Linux版本:Centos6.8问题:关机后再次开机出现网卡变更的情况网卡问题出现Error:No suitable device found: no device found for connection ‘eth0’使用ifconfig查看网络ip发现ip变更,起初怀疑是动态ip的原因,但重启网络服务后发生如下图的错误,知晓是网卡出现了问题,解决网卡问题访问图片中的地址,找到网卡文件,发现多出一个新网卡eth1此时需要删去旧网卡,并将新网卡的eth1改为eth原创 2021-04-19 22:43:47 · 251 阅读 · 0 评论 -
Hive基于MR/Tez/本地模式的对比
实验环境内存:16GBCPU:i5 4590Centos:6.8Hive:2.3.6实验数据数据量:1138526字段:3个实验目的对比Hive on MR 与 Hive on Tez 以及Hive本地模式在不同语句下的执行效率对比实验结论省去看实验过程的麻烦本地模式肉眼可见,效果极佳,但是对硬件和内存有一定要求,无法处理大数据量Tez优势是将具有依赖的多个作业转换成一个作业,从而减少与HDFS的交互,达到提升效率的目的。count和排序优化效果不好的原因是什么——尚未找到合原创 2021-04-15 14:59:29 · 1230 阅读 · 0 评论 -
基于大数据平台数据分析技术选型调研
技术选型调研大方向任务分布式平台选出几个可行的方案分析优缺点任务细分:数据源存储的问题支持分布式的深度学习组件业内端到端的解决方案有哪些——可借鉴的架构方案方案路线hdfs -> mapreduce -> hive(on spark/Tez) -> 提取小批量数据 -> 预建模预分析:sklearn/Tensorflowhdfs -> yarn -> spark -> spark mllib/TensorFlowonSpar原创 2021-03-09 15:07:28 · 621 阅读 · 0 评论 -
Centos6.8 yum报错及修复YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid
本来是要安装python的,结果发现yum报错YumRepo Error: All mirror URLs are not using ftp, http[s] or file.Eg. Invalid release/repo/arch combination/removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt0.查看yum配置vim /etc/yum.repos.d/Cen原创 2021-02-02 11:15:51 · 8221 阅读 · 26 评论