- 博客(75)
- 资源 (5)
- 收藏
- 关注
原创 Spark源码精读之《容器分配策略》
Spark请求Yarn的容器,不论是Client模式还是Cluster模式,都是走的相同流程。为了简便,拿Client提交流程标识下。下图1,是Spark程序基于Client模式的提交总流程,容器分配就是在第4阶段, 获取Container后进行的。对Spark提交流程有兴趣的朋友可以浏览另一篇博文。
2023-03-20 14:51:55 172
原创 Spark源码精读之SparkSubmit(client)
按照图1流程,整个提交过程可以分为9个步骤。1、yarnClient提交AM的启动命令给RM。2、RM找到空闲NM,启动用户自定义Spark进程。3、初始化SparkContext时,注册AM。4、创建YarnAlocator对象,并向RM获取Container资源。5、YarnAlocator对象中laucherPool对象启动线程,并通过nmClient启动新的容器,并创建ExectuorBackend。6、ExecutorBackend向DriverEndpoint注册。
2023-03-19 12:04:02 453
原创 Spark3源码精读 之 Dispatcher
在Apache Spark中,Dispatcher是Spark Master进程的一个组件,用于接收和处理来自客户端应用程序的请求,例如提交应用程序、杀死应用程序等。Dispatcher作为Spark Master进程的一部分,是处理客户端请求的主要入口点。当客户端应用程序需要与Spark Master交互时,它们会将请求发送到Dispatcher,Dispatcher负责将请求路由到相应的Spark Master组件进行处理。
2023-03-11 14:26:16 493
原创 SparkSQL优化之输入小文件是否需要合并?
Note: spark版本2.3.1HiveSQL优化时, 输入分片需要开启参数进行合并, 否则会产生很多分片.那么SparkSQL是如何应对大量输入小文件的呢?本例以Hive表为例(大量parquet小文件, 可切分).首先我们Debug到这里(“package org.apache.spark.sql.execution.FileSourceScanExec”)这里有个模式匹配, 我们是非分区表, 走默认匹配.代码如下 private def createNonBucketedRead
2020-05-28 15:55:58 2460
原创 Spark任务提交流程(整理版)
一、client提交任务到RM.二、RM启动AM.三、AM启动Driver线程, 并向RM申请资源.四、RM返回可用资源列表.五、AM通过nmClient启动Container, 并且启动ExecutorBackend后台进程.六、Executor反向注册给Driver七、Executor启动任务
2020-05-26 22:11:27 1816
原创 Spark任务提交流程
Spark的任务, 生产环境中一般提交到Yarn上执行.具体用法如下spark-submit \--class com.gaia.familymart.test.ConnectES \--name connES \--master yarn \--deploy-mode client \--jars /home/fmtt/elasticsearch-spark-20_2.11-7.5.0.jar \--driver-memory 1G \--executor-memory 6G \-
2020-05-26 17:40:48 1010
原创 Spark-Core、Spark-SQL的内核机制
Spark基于内存运算, 是MapReduce的下一代替换计算框架, 主要包含Spark-Core、Spark-SQL、Spark-Streaming、Spark-ML.本系列只介绍Spark-Core和Spark-SQL的内核机制.本系列分以下几篇文章.1、Spark的任务提交流程(Spark-Core和Spark-SQL通用)2、Spark-Core的阶段划分, 以及任务执行3、Spark-SQL的Shuffle介绍...
2020-05-26 15:51:29 196 1
原创 Using Catalyst in Spark SQL
在SparkSQL中, 把一条SQL语句转化成对应的RDD任务, 完成这一过程(后续用"解析SQL到RDD"过程代替这一过程)全部在Catalyst框架实现. "解析SQL到RDD"这一过程, 主要包含了4个组成部分, 如下图所示 analyzing a logical plan to resolve references(分析逻辑计划用于解析引用) SparkSQL开始是一个待计算的关系, 要么是被SQL parser返回的abstract syntax...
2020-05-18 20:51:16 205
原创 SparkSQL 如何把sqlText转化成RDD可以执行的tasks 系列
上图是一个通用的SparkSQL底层执行流程图.具体流程如下描述(上图是一个lazy函数, 遇到active函数才会执行):一、SparkSQL通过parser(解析器), 把sqlText转化成UnResolved Logical Plan.(这是一棵parsed Logical Plan AST语法树).二、SparkSQL通过Analyer(分析器), 借助Catalog中的元数据(schema), 把UnResolved Logical Plan转化成Res
2020-05-18 17:06:24 948
转载 intellij IDEA 如何设置默认的maven配置?
我自己本机配置了一个maven环境。每次新开一个项目都要重新选择一个maven的配置,默认的都是这个。如图:设置里面去改为自己要的设置...
2020-04-13 21:38:29 2663 1
转载 [转]SparkSQL的自适应执行---Adaptive Execution
1 背景本文介绍的 Adaptive Execution 将可以根据执行过程中的中间数据优化后续执行,从而提高整体执行效率。核心在于两点 执行计划可动态调整 调整的依据是中间结果的精确统计信息 2 动态设置 Shuffle Partition2.1 Spark Shuffle 原理如上图所示,该 Shuffle 总共有 2 个 Mapper 与 5 ...
2020-03-09 11:15:53 1116 1
转载 Spark DataFrame join后移除重复的列
在Spark,两个DataFrame做join操作后,会出现重复的列。有两种方法可以用来移除重复的列。方法一:join表达式使用字符串数组(用于join的列)df1.join(df2, Seq("id","name"),"left")这里DataFrame df1和df2使用了id和name两列来做join,返回的结果会对这两列去重。join的第三个参数为join的类型:left,rig...
2020-02-20 22:04:11 6134
原创 ElasticSerach-SQL初体验
一、ES-SQL安装笔者是通过ambari集成ES 6.3.2版本的. ES-SQL已经安装OK. 看官可以通过搜索引擎解决, 不再赘言.二、ES-SQL启动命令行启动cd /es-home/bin ./elasticsearch-sql-cli 回车进入, 出现以下界面即说明成功 通过web启动NLPChina提供了一个基于Web的查询方案(...
2020-01-13 18:05:50 459 1
原创 ElasticSearch初体验
一、ElasticSearch安装详细步骤参考:https://www.jianshu.com/p/15d31cf301541、官网下载对应的压缩包.2、安装.安装中会遇到两个问题: (1)、Linux文件句柄数不足. (2)、Linux内存过小. 都在上面的网页中可以得到答案.二、ES使用教程1、走http方式存储查询数据 (1)、谷歌下载个应用...
2020-01-06 15:30:04 134
转载 ES(elasticsearch)安装教程
安装过程基本来自互联网, 有一个小问题需要解决.centos中ulimit -n (默认是1024), ES需要65536, 所以我们需要修改.修改的方法, 网上有很多, 大多都不可用.本人试坑后, 以下可用.vim /etc/security/limits.conf添加配置如下:es(网上大多是*, 导致不生效) soft nofile 65536es hard ...
2020-01-03 13:53:58 6046
转载 scala判断数据类型
在python中, 可以通过"type(instants)"去判断类型.scala中, 判断一个数据或者对象的类型只需要在该对象后面添加.getClass.getSimpleNamescala> 222.getClass.getSimpleNameres1: String = intscala> "222".getClass.getSimpleNameres2: ...
2019-12-31 10:43:37 3502
原创 Scala基础知识点
1、val和var区别val是定义常量, var是定义变量.因此val定义的参数, 不能再次被赋值. 而var定义的参数, 可以再次赋值.
2019-12-26 13:30:55 201
转载 PyCharm跳回上一步操作和撤销操作
pycharm是Python的开发工具.我们经常会用alt+b, 进入某个方法查看具体实现或者用法Demo.如果tab开的不多, 我们可以通过tab标签找到原始页面.但是标签太多, 我们不好管理. 因此可以通过快捷方式"ctrl+alt+←(左箭头)", 退回到原始页面.也可以在pycharm的顶层选项"View"中, 把跳回箭头显示出来.把 View 中的 Toolb...
2019-12-26 11:58:09 79831 9
原创 Python容器之集合
一、集合的定义集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合,交集,差集,对称差分等数学运算。二、集合的创建1、创建一个空集合>>> _set = set()>>> _setset()2、创建一个非空集合从下面代码可以体现集合会消除重复元素.>>> basket = {'...
2019-12-18 11:21:49 208
原创 Python容器之元组
一、元组的定义元组(tuple是一种序列, 使用小括号包裹. 元组中各元素用逗号分隔. 元组不支持修改或删除或新增元素(可以连接两个元组).元组是一种不可变的数据类型, 当然再元组中可以添加可变的数据类型例如列表, 对列表的修改, 元组中列表的值就会变化.二、元组的创建1、创建一个空元组>>> _tup = ()>>> _tup ()2、包含一...
2019-12-17 15:26:59 191
原创 Python容器之字典
一、字典的定义字典是一种可变容器,可存储任意类型对象。字典是以键值对(key-value)存储和展现的.可以将字典看做是键值对的集合, 键必须是唯一的, 值可以不用唯一.键是索引, 所以键通常是字符串, 数字或者不含可变对象的元组.总结来说, 字典是存储键值对的容器.二、字典的创建1、创建一个空的字典>>> _dict = {}>>> _dic...
2019-12-13 18:24:32 995
原创 Hive Union all/ Union 操作中产生文件夹
背景: 今天在工作中遇到一个问题, 使用Union/Union ALL的时候, 结果表数据, 不会直接存放在表文件夹下面, 而是在表文件夹下面建个二级文件夹, 再内部才是HDFS文件. 结果表, 并不是分区表, 从而导致Spark无法正常读取Hive数据. 网上找了下结果, 但是并没有解决这个问题, 记录下.类似解决方案:1、https://stackov...
2019-12-12 14:16:53 2095 4
转载 pyspark AnalysisException: u'Text data source supports only a single column, and you have 5 columns
原文链接:https://my.oschina.net/u/2000675/blog/2967538pyspark dataframe 多列数据当我们想存储为text格式的时候:df.coalesce(1).write.format("text").option("header", "false").mode("append").save("<path>")我们发现报错:...
2019-12-12 14:08:56 2306
原创 Python容器之列表
一、列表的使用方法下图列出列表的使用方法二、列表使用方法拓展1、列表作为栈使用(推荐)①、栈的定义: 栈是计算机数据结构中的术语, 它按照先进后出的原则存储数据.②、列表作为栈的使用:列表的append()方法, 可以把数据附加到最后.列表的pop()方法, 可以把最后的数据删除.两者结合, 实现了栈的原理._list = ['a','b','c']_list.append('...
2019-12-06 15:39:43 212
转载 Spark SQL overwrite问题
背景:对Hive数据去重更新到原表, beeline中可以直接overwrite.但是spark.sql中报错: Cannot overwrite a path that is also being read from.;解决方案:经过研究, 发现spark.sql 貌似不能直接overwrite, 需要先到临时表再导回原表, 代码如下.Ps, 一样的代码, 之前貌似可以...
2019-12-02 11:44:15 3249
原创 python插入Null值数据到Postgresql
数据库中最好插入Null值.在python中, 暂时没找到通过sql语句的方式插入Null值.推荐使用轮子的方法.def insert_sample_data(self, values): # added self since you are referencing it below with self.con.cursor() as cur: sql...
2019-11-25 17:42:55 2566
原创 pyspark连接Postgresql出错. java.lang.ClassNotFoundException: org.postgresql.Driver
pyspark连接Postgresql的方法方法一: 在spark2/jars路径中放的Postgresql jar 包不起作用.(报错)方法二: 在spark.conf.set中设置 spark.conf.set('spark.jars','/usr/hdp/3.0.1.0-187/spark2/jars/postgresql-42.2.5.jar') 不起作用. (报错)解决方案...
2019-11-11 16:15:06 6666 2
原创 PyCharm设置自动换行
使用PyCharm编写Python代码, 有时候过长的代码, 会超过边界, 导致阅读或者修改起来很麻烦.网上搜索了下解决方案.以下两个步骤.(1)首先打开以下路径,File --> Settings... --> Editor --> General, 勾上右边的Soft-wrap files, 并在后面的text中, 输入";.py"(2)再打开以下...
2019-11-06 16:39:44 4146 2
转载 python中判断变量的类型
python的数据类型有:数字(int)、浮点(float)、字符串(str),列表(list)、元组(tuple)、字典(dict)、集合(set)一般通过以下方法进行判断:1、isinstance(参数1,参数2)描述:该函数用来判断一个变量(参数1)是否是已知的变量类型(参数2) 类似于type()参数1:变量参数2:可以是直接或间接类名、基本类型或者由它们组成的元组。...
2019-11-05 17:06:52 145
转载 python读写文件的三种方式: open()与with open()
1. open()这样直接打开文件,如果出现异常(如,读取文件过程中文件不存在),则直接出现错误,close命令无法执行,文件无法关闭。file = open("text.txt","r")for line in file.readlines(): print linefile.close()2. with open() as file:好处:用with语句的好处就是到达...
2019-11-04 15:30:41 4278
原创 hive能够设置默认值吗?像mysql的default值
总结:不能直接设置, 需要通过其他方式才能得到同样的效果, 但是针对load来说不可用.基于业务, 需要给某列设置默认值.有一个表"test_default", 如下.ColName ColTYpe id int dt timestamp 关系型数据库建表:create table test_default(id int, dt times...
2019-11-04 13:11:09 19987 5
原创 Hive优化之小文件合并
问题背景:公司集群有个表, 执行一次insert overwrite table select * from table; 大概需要7000s.源表是从pgsql抽上来的, 用了500个maptasks.该表以月为分区, 每个分区文件夹下面产生了大量的小文件, 有的都不到1M.问题产生原因:输入表本身就有很多小文件,插入的时候没有限制reduce个数, 资源也没有限制,...
2019-10-22 11:13:18 5734 1
原创 Sqoop导入导出功能介绍
Sqoop是关系型数据库(MySQL/Postgresql)和HDFS(Hive/HDFS文件)进行交互的一个工具.Sqoop import 就是从关系型数据库导入到基于HDFS的数据库.Sqoop export 就是从基于HDFS的数据库导出到关系型数据库.Note: Sqoop export 是直接把导出HDFS文件.如果创建分区表, 那么每个分区表都有对应的HDFS文件, 每个...
2019-10-21 13:35:31 680
原创 Postgresql 数据库 varchar()字符占用多少字节
create table tmp1(name varchar(3));select pg_size_pretty(pg_relation_size('tmp1'));-- 0 bytesinsert into tmp(name) values('欧阳子');--8192 bytes8192 bytes = 8KB = 1页(数据库的最小单位)8页 = 1区 = 64...
2019-10-17 17:10:49 14256 1
原创 python append hdfs 总数目异常
问题:python append 数据到hdfs上.导入后select count(*) from table;条数为1.原因:mateData表中没有更新数据.解决方案:ANALYZE TABLE tablename(修改表名) COMPUTE STATISTICS;...
2019-10-09 16:02:45 89
原创 pyspark异常处理之:java.lang.OutOfMemoryError: Java heap space
问题: java.lang.OutOfMemoryError: Java heap space报错提示:Py4JJavaError: An error occurred while calling o119.collectToPython.: org.apache.spark.SparkException: Job aborted due to stage failure: Task 3...
2019-10-07 00:40:39 6370
原创 MapReduce中的排序之 -- 归并排序
排序是大数据的核心精华.快排和归并排序更是MapReduce中的精华部分.以下是归并排序部分.一、百度百科: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成...
2019-10-03 23:51:03 1750
原创 MapReduce中的排序之 -- 快排
排序是大数据的核心精华.快排和归并排序更是MapReduce中的精华部分.以下是快排部分.一、百度百科: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二、通俗解释: 拿到一组数据后, 随机...
2019-10-03 22:46:19 1172
Spark SQL- Relational Data Processing in Spark(Paper).rar
2020-05-18
winutils.exe+hadoop.dll搭建hadoop平台必要的工具
2018-09-27
MySQL技术内幕(第4版)
2016-05-30
jdk-8u77-windows-x64.exe
2013-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人