春雨里洗过的太阳

世间所有的相遇,都是久别重逢

一 架构概览 sparkSql 使用antlr4 解析sql ,所以用户可以基于spark引擎使用sql语句对数据进行分析,而不用去编写程序代码. spark sql的运行流程如下: 大概有6步: 1. sql 语句经过 SqlParser 解析成 Unresolved Logical Plan; 2. analyzer 结合 catalog 进行绑定,生成 Logical Plan; 3. optimizer 对 Logical Plan 优化,生成 Optimized LogicalPlan; 4. SparkPlan 将 Optimized LogicalPlan 转
阅读全文 »

一 简介 YARN总共有三种调度策略:FIFO、Capacity Scheduler、Fair Scheduler。FIFO就是先进先出,最简单,实际中用的也比较少,这里就不再赘述了。Capacity Scheduler比Fair Scheduler出现的早,但随着慢慢的发展和改进,这二者的差异也越来越小了(个人觉得以后这两个合并为一个也是有可能的)。使用情况的话目前CDH(版本为5.8.2)默认使用Fair Scheduler,HDP(版本为2.6)默认使用Capacity Scheduler。下面我们分别介绍。 二 使用说明 2.1 Capacity Scheduler Capacity
阅读全文 »

一 oozie的死锁产生原因 ​ 严格来说并不是Ooize导致的死锁,而是YARN的调度机制导致的死锁。我们先来解释一下何时会产生死锁,以及原因. ​ YARN目前主要有三种调度策略,而最常使用的是Capacity Scheduler和Fair Scheduler,这两种策略都是基于队列的,而且默认只有一个default队列,也就是所有的任务都是放在这个队列中的;同一队列内使用FIFO、Fair、DRF三者之一。而产生死锁的原因和我们进程死锁道理其实是一样的,YARN支持一个任务(在YARN里面一般叫Application,Oozie里面叫Job,本文统一用任务来指代这两个概念)里面可以产生
阅读全文 »

一 udf简介 当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function) 二 基于Java的UDF,UDAF和UDTF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 开发UDF: 开发自定义UDF函数有两种方式,一个是继承org.apache.hadoop.hive.ql.exec.UDF,另一个是继承org.apache.hadoop.hive.ql.udf.generic.GenericUDF; 如果是针对简单的数据类型(比如String、Integ
阅读全文 »

一、概述 操作 excel 是程序员经常要遇到的场景。因为产品、运营的数据都是以这种格式存储。所以,当程序员拿到这些数据肯定要解析,甚至需要把结果输出成 excel 文件。 下面就介绍如果用 Python 方面的读、写 excel 文件。 二、openpyxl A Python library to read/write Excel 2010 xlsx/xlsm files 借助 Python 的三方库 openpyxl ,让操作 excel 变得简单。 1. 安装:pip install openpyxl 2. 文档:官方文档 3. 示例代码: 1 2 3 4 5 6 7 8
阅读全文 »

Livy 一 使用背景 Apache Spark作为当前最为流行的开源大数据计算框架,广泛应用于数据处理和分析应用,它提供了两种方式来处理数据:一是交互式处理,比如用户使用spark-shell或是pyspark脚本启动Spark应用程序,伴随应用程序启动的同时Spark会在当前终端启动REPL(Read–Eval–Print Loop)来接收用户的代码输入,并将其编译成Spark作业提交到集群上去执行;二是批处理,批处理的程序逻辑由用户实现并编译打包成jar包,spark-submit脚本启动Spark应用程序来执行用户所编写的逻辑,与交互式处理不同的是批处理程序在执行过程中用户没有与Spa
阅读全文 »

一 词法,语法解析简介 SQL作为现代计算机行业的数据处理事实标准,一直倍受数据分析师和软件开发者所青睐,从最早应用SQL的单机DBMS(如MySQL、Oracle),到NoSQL提供SQL兼容层(如HBase的Phoenix),到最近火热的NewSQL(如Spanner、TiDB),还有几乎所有主流的计算框架(如Spark、Flink)都兼容了SQL。 SQL规范也一直在稳定发展,近年来通过语法拓展满足了离线批处理、流式处理以及时序数据处理几乎所有的需求,并且因为用户基数极大,兼容SQL让用户可以没有学习成本地把业务迁移到新的软件系统中。SQL本质上是一种数据处理的描述语言,或者说是一系列
阅读全文 »

一 Spark的动态资源分配 1 问题背景: 用户提交Spark应用到Yarn上时,可以通过spark-submit的num-executors参数显示地指定executor个数,随后,ApplicationMaster会为这些executor申请资源,每个executor作为一个Container在Yarn上运行。Spark调度器会把Task按照合适的策略分配到executor上执行。所有任务执行完后,executor被杀死,应用结束。在job运行的过程中,无论executor是否领取到任务,都会一直占有着资源不释放。很显然,这在任务量小且显示指定大量executor的情况下会很容易造成资源
阅读全文 »

一 click 1介绍 click 是一个以尽可能少的代码、以组合的方式创建优美的命令行程序的 Python 包。它有很高的可配置性,同时也能开箱即用。 它旨在让编写命令行工具的过程既快速又有趣,还能防止由于无法实现预期的 CLI API 所产生挫败感。它有如下三个特点: * 任意嵌套命令 * 自动生成帮助 * 支持运行时延迟加载子命令 2 快速开始 2.1 业务逻辑 假设命令行程序的输入是 name 和 count,功能是打印指定次数的名字。 那么在 hello.py 中,很容易写出如下代码: 1 2 3 4 def hello(count, name): """
阅读全文 »

一 简介 ​ 一种面向对象,面向函数的解释型计算机程序设计语言,Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进 二 安装 1、Python的下载 1、python网址:https://www.python.org/ 2、anaconda网址:https://www.anaconda.com/ 注意:Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 三 python的基础语法 1 注释及乱码 1:单行注释:以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
阅读全文 »