自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (5)
  • 收藏
  • 关注

原创 Spark源码精读之《容器分配策略》

Spark请求Yarn的容器,不论是Client模式还是Cluster模式,都是走的相同流程。为了简便,拿Client提交流程标识下。下图1,是Spark程序基于Client模式的提交总流程,容器分配就是在第4阶段, 获取Container后进行的。对Spark提交流程有兴趣的朋友可以浏览另一篇博文。

2023-03-20 14:51:55 186

原创 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 461

原创 Spark源码精读 之 ApplicationMaster

Spark版本:V2.3.2。

2023-03-14 19:37:22 349

原创 Spark3源码精读 之 Dispatcher

在Apache Spark中,Dispatcher是Spark Master进程的一个组件,用于接收和处理来自客户端应用程序的请求,例如提交应用程序、杀死应用程序等。Dispatcher作为Spark Master进程的一部分,是处理客户端请求的主要入口点。当客户端应用程序需要与Spark Master交互时,它们会将请求发送到Dispatcher,Dispatcher负责将请求路由到相应的Spark Master组件进行处理。

2023-03-11 14:26:16 502

原创 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 2472

原创 Spark任务提交流程(整理版)

一、client提交任务到RM.二、RM启动AM.三、AM启动Driver线程, 并向RM申请资源.四、RM返回可用资源列表.五、AM通过nmClient启动Container, 并且启动ExecutorBackend后台进程.六、Executor反向注册给Driver七、Executor启动任务

2020-05-26 22:11:27 1828

原创 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 1019

原创 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 199 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 207

原创 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 959

转载 intellij IDEA 如何设置默认的maven配置?

我自己本机配置了一个maven环境。每次新开一个项目都要重新选择一个maven的配置,默认的都是这个。如图:设置里面去改为自己要的设置...

2020-04-13 21:38:29 2668 1

转载 [转]SparkSQL的自适应执行---Adaptive Execution

1 背景本文介绍的 Adaptive Execution 将可以根据执行过程中的中间数据优化后续执行,从而提高整体执行效率。核心在于两点 执行计划可动态调整 调整的依据是中间结果的精确统计信息 2 动态设置 Shuffle Partition2.1 Spark Shuffle 原理如上图所示,该 Shuffle 总共有 2 个 Mapper 与 5 ...

2020-03-09 11:15:53 1119 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 6174

原创 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 463 1

原创 ElasticSearch初体验

一、ElasticSearch安装详细步骤参考:https://www.jianshu.com/p/15d31cf301541、官网下载对应的压缩包.2、安装.安装中会遇到两个问题: (1)、Linux文件句柄数不足. (2)、Linux内存过小. 都在上面的网页中可以得到答案.二、ES使用教程1、走http方式存储查询数据 (1)、谷歌下载个应用...

2020-01-06 15:30:04 136

转载 ES(elasticsearch)安装教程

安装过程基本来自互联网, 有一个小问题需要解决.centos中ulimit -n (默认是1024), ES需要65536, 所以我们需要修改.修改的方法, 网上有很多, 大多都不可用.本人试坑后, 以下可用.vim /etc/security/limits.conf添加配置如下:es(网上大多是*, 导致不生效) soft nofile 65536es hard ...

2020-01-03 13:53:58 6078

转载 scala判断数据类型

在python中, 可以通过"type(instants)"去判断类型.scala中, 判断一个数据或者对象的类型只需要在该对象后面添加.getClass.getSimpleNamescala> 222.getClass.getSimpleNameres1: String = intscala> "222".getClass.getSimpleNameres2: ...

2019-12-31 10:43:37 3530

原创 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 81197 9

原创 Python容器总结

在Python的开发场景中, 我们主要使用了四种数据容器.其详细介绍如下:字典列表元组集合我们对其做了个比较

2019-12-18 15:07:48 203

原创 Python容器之集合

一、集合的定义集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合,交集,差集,对称差分等数学运算。二、集合的创建1、创建一个空集合>>> _set = set()>>> _setset()2、创建一个非空集合从下面代码可以体现集合会消除重复元素.>>> basket = {'...

2019-12-18 11:21:49 213

原创 Python容器之元组

一、元组的定义元组(tuple是一种序列, 使用小括号包裹. 元组中各元素用逗号分隔. 元组不支持修改或删除或新增元素(可以连接两个元组).元组是一种不可变的数据类型, 当然再元组中可以添加可变的数据类型例如列表, 对列表的修改, 元组中列表的值就会变化.二、元组的创建1、创建一个空元组>>> _tup = ()>>> _tup ()2、包含一...

2019-12-17 15:26:59 201

原创 Python容器之字典

一、字典的定义字典是一种可变容器,可存储任意类型对象。字典是以键值对(key-value)存储和展现的.可以将字典看做是键值对的集合, 键必须是唯一的, 值可以不用唯一.键是索引, 所以键通常是字符串, 数字或者不含可变对象的元组.总结来说, 字典是存储键值对的容器.二、字典的创建1、创建一个空的字典>>> _dict = {}>>> _dic...

2019-12-13 18:24:32 1023

原创 Hive Union all/ Union 操作中产生文件夹

背景: 今天在工作中遇到一个问题, 使用Union/Union ALL的时候, 结果表数据, 不会直接存放在表文件夹下面, 而是在表文件夹下面建个二级文件夹, 再内部才是HDFS文件. 结果表, 并不是分区表, 从而导致Spark无法正常读取Hive数据. 网上找了下结果, 但是并没有解决这个问题, 记录下.类似解决方案:1、https://stackov...

2019-12-12 14:16:53 2119 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 2331

原创 Python容器之列表

一、列表的使用方法下图列出列表的使用方法二、列表使用方法拓展1、列表作为栈使用(推荐)①、栈的定义: 栈是计算机数据结构中的术语, 它按照先进后出的原则存储数据.②、列表作为栈的使用:列表的append()方法, 可以把数据附加到最后.列表的pop()方法, 可以把最后的数据删除.两者结合, 实现了栈的原理._list = ['a','b','c']_list.append('...

2019-12-06 15:39:43 216

转载 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 3272

原创 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 2579

原创 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 6699 2

原创 PyCharm设置自动换行

使用PyCharm编写Python代码, 有时候过长的代码, 会超过边界, 导致阅读或者修改起来很麻烦.网上搜索了下解决方案.以下两个步骤.(1)首先打开以下路径,File --> Settings... --> Editor --> General, 勾上右边的Soft-wrap files, 并在后面的text中, 输入";.py"(2)再打开以下...

2019-11-06 16:39:44 4184 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 147

转载 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 4287

原创 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 20095 5

原创 Hive优化之小文件合并

问题背景:公司集群有个表, 执行一次insert overwrite table select * from table; 大概需要7000s.源表是从pgsql抽上来的, 用了500个maptasks.该表以月为分区, 每个分区文件夹下面产生了大量的小文件, 有的都不到1M.问题产生原因:输入表本身就有很多小文件,插入的时候没有限制reduce个数, 资源也没有限制,...

2019-10-22 11:13:18 5738 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 686

原创 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 14383 1

原创 python append hdfs 总数目异常

问题:python append 数据到hdfs上.导入后select count(*) from table;条数为1.原因:mateData表中没有更新数据.解决方案:ANALYZE TABLE tablename(修改表名) COMPUTE STATISTICS;...

2019-10-09 16:02:45 90

原创 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 6440

原创 MapReduce中的排序之 -- 归并排序

排序是大数据的核心精华.快排和归并排序更是MapReduce中的精华部分.以下是归并排序部分.一、百度百科: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成...

2019-10-03 23:51:03 1768

原创 MapReduce中的排序之 -- 快排

排序是大数据的核心精华.快排和归并排序更是MapReduce中的精华部分.以下是快排部分.一、百度百科: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二、通俗解释: 拿到一组数据后, 随机...

2019-10-03 22:46:19 1186

Spark SQL- Relational Data Processing in Spark(Paper).rar

SparkSQL的Paper, 阐述了Spark-SQL的内部机制. 建议同学可以多看看底层原理.

2020-05-18

winutils.exe+hadoop.dll搭建hadoop平台必要的工具

winutils.exe+hadoop.dll搭建hadoop平台必要的工具。这是2.7.1版本的。有其他版本可以直接去github上找。或者找我要。

2018-09-27

sqljdbc.jar

sqlserver官方资源,sqljdbc,可用于kettle连接sqlserver数据库。

2018-08-19

MySQL技术内幕(第4版)

2016-05-30

jdk-8u77-windows-x64.exe

Oracle官网资源,jdk-8u77-windows-x64。直接运行,选择相应文件夹放置jdk和jre,然后配置环境变量即可使用。

2013-01-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除