自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 Shlle面试题

Shlle面试题一、awk二、sed三、sort四、cut五、面试题一、awk二、sed三、sort四、cut五、面试题

2020-09-30 11:55:39 18

转载 Shell基础概览(下)

Shell基础概览(下)一、流程控制1. if-else2.for 循环3.while 语句4.无限循环5.until 循环6.case分支7.跳出循环二、重定向一、流程控制和Java、PHP等语言不一样,shell的流程控制不可为空,如(以下为PHP流程控制写法):<?phpif (isset($_GET["q"])) { search(q);}else { // 不做任何事情}在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。

2020-09-29 18:18:09 20

转载 Shell基础概览(中)

Shell基础概览(中)一、运算符1.概览2.算术运算3.关系运算符4.布尔运算符5.逻辑运算符6.字符串运算符7.文件测试运算符一、运算符1.概览Shell 和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符-文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 `而不是

2020-09-29 17:26:13 6

转载 Shell基础概览(上)

Shell基础概览一、Shell教程1.基础概念2.第一个shell脚本3.运行shell二、Shell变量1.定义变量2.使用变量3.只读变量4.删除变量5.变量类型三、Shell字符串1.单引号2.双引号3.字符串的操作四、Shell数组1.定义数组2.读取数组3.获取数组的长度五、Shell 注释1.单行注释2.多行注释六、参数传递注:本文源至Shell教程,仅用于个人学习,侵权删。一、Shell教程1.基础概念Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。S

2020-09-27 18:52:41 7

原创 Hive复杂日志数据类型的存储与解析

Hive复杂日志数据类型的存储与解析一、背景二、场景一1.日志格式2.Hive存储一、背景实际工作中会遇到很多复杂数据类型,尤其是离线日志中的嵌套json,本文列举几种常见的复杂格式,同时给出存储和解析方法。二、场景一1.日志格式给出两条日志数据如下:{ "device_id":"1", "event_name":"people", "event_values": "{ "search_word":"hui", "search_res":[192061100,819430

2020-09-24 17:21:25 30

原创 数据仓库——数仓分层

数仓分层一.分层的作用二、ODS (opreational data store)三、DWD(data warehouse detail)四、DIM五、DWS(data warehouse service)六、DM(data market)七、APP/ADS一.分层的作用数仓分层的目的是:逐层解耦,减少重复计算,降低烟囱式开发。越到底层,越接近业务发生的记录,越到上层,越接近业务目标。具体如下:①清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解,实现业务数据解耦

2020-09-21 19:01:13 107 1

原创 Hive Sql中六种面试题型总结

Hive面试/经典练习题一、N日留存1.思路分析二、连续登陆1.数据准备2.思路分析三、 Top N一、N日留存1.思路分析按天留存率计算 就是指用户在首日新增后,在接下来的后推第N天活跃情况,用后推第N天活跃的用户 / 首日新增用户。就得到后推第N天的新增用户留存率。 留存率计算案例 1月1日,新增用户200人; 次日留存:第2天,1月2日,这200人里面有100人活跃,则次日留存率为: 100 / 200 = 50% 2日留存:第3天,1月3日;这200名新

2020-09-14 18:49:11 94

原创 Hive窗口分析函数(案例详细讲解)

Hive窗口分析函数一、语法结构二、窗口函数三、Over从句四、分析函数五、COUNT、SUM、MIN、MAX、AVG详解1.数据准备参考资料一、语法结构分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置)over()函数中包括三个函数:包括分区partition by 列名、排序order by 列名、指定窗口范围rows between 开始位置 and 结束位置。我们在使用over()窗口函数时,over()函数中

2020-09-10 20:07:03 86

转载 数仓建设流程

数仓建设流程一、数仓概览二、流程详解1.梳理业务流程2.垂直切分,划分主题域3.梳理指标体系4.表实体关系调研5.维度梳理4.数仓分层7.物理模型建立三、tipis注:本文转至 如何搭建一个数据仓库,仅用于个人学习,侵权删。一、数仓概览整体建设建设过程数仓建模的过程分为业务建模、领域建模、逻辑建模和物理建模,但是这 些步骤比较抽象。为了便于落地,我根据自己的经验,总结出上面的七个步骤:梳理业务流程、垂直切分(划分主题域)、指标体系梳理、表实体关系调研、维度梳理、数仓分层以及物理模型建立。每

2020-09-10 15:26:35 210

转载 数据仓库与数据集市建模

数据仓库与数据集市建模一、前言二、数据仓库(data warehouse)1. 操作型数据库(OLTP) VS 分析型数据库(OLAP)2.数据仓库定义三、数据集市(data mart)四、维度建模的基本概念五、 维度建模的三种模式(模型)1.星型模式(模型)2.雪花模式(模型)3.星座模式(模型)4.三种模式对比六、更多可能的事实属性七、经典星座模型1.共享维度2. 细节/聚集事实表八、缓慢变化维度问题九、规范化数据仓库十、独立数据集市十一、两种数据仓库建模体系对比注:本文转自数据仓库与数据集市建模,仅

2020-09-10 12:16:18 125

原创 Apache Atlas数据治理和元数据框架

概述场景架构原理使用安装

2020-09-10 11:02:11 153 7

转载 Spark指南——第六章:Spark性能调优——高级篇(2)

Spark性能调优——高级篇(2)一、前言二、数据倾斜1.数据倾斜发生时的现象2.数据倾斜发生的原理3. 如何定位导致数据倾斜的代码①某个task执行特别慢的现象②某个task莫名其妙内存溢出的现象4.查看导致数据倾斜的key三、数据倾斜的解决方案1.解决方案一:使用Hive ETL预处理数据2.解决方案二:过滤少数导致倾斜的key3.解决方案三:提高shuffle操作的并行度4.解决方案四:两阶段聚合(局部聚合+全局聚合)5.解决方案五:将reduce join转为map join6.解决方案六:采样倾斜

2020-09-09 19:55:37 28

转载 Spark指南——第六章:Spark性能调优——基础篇(1)

Spark性能调优——基础篇一、前言二、调优概述三、开发调优1.原则一:避免创建重复的RDD2.原则二:尽可能复用同一个RDD3.原则三:对多次使用的RDD进行持久化4. 原则四:尽量避免使用shuffle类算子5.原则五:使用map-side预聚合的shuffle操作(算子)6.使用高性能的算子7.原则七:广播大变量8.原则八:使用Kryo优化序列化性能原则九:优化数据结构四、资源调优1.num-executors2.executor-memory3.executor-cores4.driver-memo

2020-09-09 16:41:52 31

转载 Spark指南——第五章:Spark内核解析(2)

第五章:Spark内核解密(2)一、Spark Shuffle二、内存管理一、Spark Shuffletodo二、内存管理

2020-09-07 19:23:51 33

原创 Spark指南——第五章:Spark内核解析(1)

第六章:Spark内核解密todo

2020-09-07 15:43:01 43

原创 Spark指南——第四章:SparkStreaming编程

SparkStreaming编程todo

2020-09-07 15:38:33 14

原创 Spark指南——第三章:SparkSQL编程——DataSet(3)

SparkSQL编程——DataSet(3)一、DataSet一、DataSettodo

2020-09-04 18:44:30 24

原创 Spark指南——第三章:SparkSQL编程—— DataFrame(2)

SparkSQL编程(1)一、SparkSession二、DataFrame1.创建DataFrame①通过数据源创建DataFrame②从RDD转换创建DataFrame1.方式一:Case Class方式2.方式二:createDataFrame方式③从Hive Table查询创建2.使用SQL风格编程① 对DataFrame创建一个临时表② 对创建的people表进行SQL查询3.使用DSL(Domain Specific Language)风格编程① 查看Schema② 指定列查询③ 限制条件查询④

2020-09-04 10:47:40 34

原创 Spark指南——第三章:SparkSQL概述(1)

SparkSQL概述(1)一、SparkSQL概述二、DataFrame三、Dataset:类型安全的结构化API四、DataFrame与 Dataset的比较一、SparkSQL概述我们知道Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduc的程序的复杂性,但是由于Hive基于MapReduce进行处理,在该过程中大量的中间磁盘落地过程消耗了大量的I/O,这大大降低了运行效率。所有Spark SQL的应运而生,它是将Spark SQL转换成R

2020-09-03 12:59:46 39

原创 Spark指南——第二章:SparkCore——RDD编程(2)

SparkCore——RDD编程(2)一、编程模型二、RDD编程三、创建RDD①并行集合创建RDD②外部存储创建RDD四、转换操作(transform)1.Vaule类型的转换操作① distinct② filter(func)③ map(func)④ flatMap(func)⑤ mapPartitions(func)⑥ mapPartitionsWithIndex(func)⑦ groupBy(func)⑧ coalesce、repartition⑨ sortBy(func,[ascending], [

2020-09-02 17:18:07 29

原创 Spark指南——第二章:SparkCore——RDD概述(1)

SparkCore——RDD概述(上)一、RDD概述二、RDD的属性1.RDD分区(Partitions)2.RDD分区计算函数3.RDD依赖关系(Dependencise)4.RDD 分区函数Partitioner5. RDD优先位置(Preferred Locations)三、RDD特点四、RDD的使用说明1.优先使用结构化API2.何时使用RDD五、RDD的弹性解读(扩展)1.自动进行内存和磁盘数据存储的切换2. 基于Lineage 血统 的高效容错机制3. Task如果失败,会自动进行特定次数的重试

2020-08-31 19:11:16 50

原创 Spark指南——第一章:Spark简介

Spark简介一、What is Spark二、Why Spark1.运行速度快2.易用性好3.通用性强4.随处运行三、Spark与MR比较注:Spark系列文章参考《Spark权威指南》、《图解Spark核心技术与案例实战》、《Spark大数据商业实战三部曲》,仅用于记录个人学习,侵权删。一、What is SparkSpark是加州大学伯克利分校AMP实验室(Algorithms、 Machines and People Lab)开发的 通用大数据处理框架。Spark生态系统也称为BDAS,是伯

2020-08-31 16:19:27 92

原创 Scala编程——第12章:隐式转换和隐式参数

隐式转换和隐式参数一、隐式转换1.基本概念①应用案例②源码分析③细节问题2.隐式转换丰富类库功能3.引入隐式转换4.隐式转换规则二、隐式参数三、隐式类四、总结本章学习隐式转换和隐式参数,隐式转换和隐式参数是Scala两个功能强大的工具,在幕后处理那些很好有价值的工作。属于Scala高级阶段知识,初学者只需了解其用法即可,不用太过深入。一、隐式转换1.基本概念隐式转换指的是那种以implicit关键字声明的带有单个参数的函数。这样的函数将被自动应用,将一种类型转为另一种类型。①应用案例首先看一个简

2020-08-28 17:34:31 31

原创 Scala编程——第11章:模式匹配和样例类(下)

样例类一、样例类1.基本介绍本节学习样例类的相关知识。有关模式匹配的知识点击链接:一、样例类1.基本介绍样例类是一种特殊的类,主要用于优化模式匹配。样例类仍然是类样例类用case关键字进行声明。样例类是为模式匹配而优化的类。构造器中的每一个参数都成为val——除非它被显式地声明为var(不建议这样做)。在样例类对应的伴生对象中提供apply方法,让你不用new关键字就能构造出相应的对象。提供unapply方法让模式匹配可以工作。将自动生成toString、equals、hashCod

2020-08-26 17:48:38 28

原创 Scala编程——第11章:模式匹配和样例类(上)

模式匹配和样例类一、模式匹配1.基础案例2.模式守卫二、模式种类1.通配模式2.常量模式3.变量模式4.构造方法模式5.序列模式6.元组模式7.带类型的模式8.变量绑定本节学习Scala中十分强大的模式匹配机制,同时Scala提供了样例类,对模式匹配进行了优化。一、模式匹配Scala中的模式匹配类似于Java中的switch语法,但是更加强大。模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明。当需要匹配时,按照从上到下顺序匹配。会从第一个case分支开始,如果匹配成功,

2020-08-25 17:45:30 32

原创 Scala编程——第10章:Scala集合——映射Map(6)

第10章:Scala集合——映射(6)一、映射Map简介二、不可变映射1.创建不可变映射Map2.获取映射中值3.更新映射值4.迭代映射三、可变映射Map1.创建可变映射Map2.更新映射中的值四、排序的映射五、操作汇总1.常用可变/不可变映射操作2.不可变Map包含的操作一、映射Map简介映射Map是键/值对偶集合。映射分为不可变映射Map和可变映射Map。继关系如下图所示:不可变映射Map可变映射Map二、不可变映射1.创建不可变映射MapScala默认使用不可变M

2020-08-24 17:14:18 24

原创 Scala编程——第10章:Scala集合——集Set(5)

Scala集合——集Set(5)一、集Set的简介二、不可变集Set1.基本操作三、可变集Set1.基本操作2.排序的集SortedSet四、操作汇总1.可变集和不可变集常用操作2.不可变集操作3.可变集操作一、集Set的简介集Set是不重复元素的集合,和元组Tuple一样,集Set的元素可以是不同类型的(Set[Any])。集Set分成可变Set和不可变Set。Scala的API包含了基础的特质(trait),在此基础上,又提供了两个子特质,一个用于表示可变集,另一个表示不可变集。不可变

2020-08-21 16:14:24 30

原创 Scala编程——第10章:Scala集合——元组(4)

Scala集合——元组(4)一、元组简介二、使用元组本节主要学习元组Tuple集合的概念和相关操作。一、元组简介元组是不同类型的元素的集合,元组可以容纳不同类型的元素。元组是不可变的。元组中最多只能有22个元素。从Tuple1 到 Tuple22。二、使用元组①创建元组: 实例化新的元组,只需要将对象放在圆括号当中,用逗号隔开即可。②访问元组: 使用用英文句点、下画线和 从1开始的序号来访问每一个元素。 你也许正好奇为什么不能像访问列表元素,即"tuple(0)"那样访问元组

2020-08-20 16:57:38 21

原创 剑指 Offer 42. 连续子数组的最大和——从这题开始学习动态规划

剑指 Offer 42. 连续子数组的最大和——从这题开始学习动态规划一、题目二、分析三、题解四、复杂度这题是典型的动态规划题目,新手可以从这题开始入手动态规划,从动态规划的概念 到 解题思路 到最后的优化方式。一、题目剑指 Offer 42. 连续子数组的最大和二、分析动态规划入门文章参考:什么是动态规划(Dynamic Programming)?动态规划的意义是什么?1.能不能使用动态规划一个问题能不能动态规划 有以下三点:1.重叠子结构:一个大的问题能否拆成若干小问题2.满足

2020-08-20 13:04:34 34

原创 Scala编程——第10章:Scala集合——列表(3)

Scala集合——列表(3)一、列表简介二、不可变列表List1.构建列表2.基本操作3.初阶方法4.高阶方法本节主要学习列表集合的概念和相关操作。一、列表简介列表是Seq的子类。Seq是一个有先次序的值的序列,具有一定长度的可迭代访问的对象。列表分成 不可变列表List 和 可变列表ListBufferList中可以存放任何数据类型, 但是和数组一样,同一个列表的元素必须是相同类型的。继承关系不可变列表ListList -> LinearSeq -> Seq -> I

2020-08-19 19:40:45 39

原创 141.环形链表——HashMap+快慢指针详解

环形链表一、题目二、分析141.环形链表分析方法一:哈希表方法二:双指针142.环形链表II分析方法一:哈希表方法二:双指针三、题解四、复杂度本文主要讲解leetcode中141.环形链表和142.环形链表II 基于 HashMap 和 快慢指针两种解法。一、题目141.环形链表142.环形链表II二、分析141.环形链表分析方法一:哈希表思路我们可以通过检查结点此前是否被访问过来判断链表是否为环形链表。常用的方法是使用哈希表算法我们遍历所有结点并在哈希表中存储每个结点的引

2020-08-19 12:45:27 21

原创 Scala编程——第10章:Scala集合——数组(2)

Scala集合——数组(1)一 、数组简介二、定长数组三、变长数组四、数组转换五、常用方法六、多维数组本节主要学习数组Array集合的概念和相关操作。一 、数组简介数组是Seq的子类。Seq是一个有先次序的值的序列,具有一定长度的可迭代访问的对象。数组分成不可变数组(定长数组)和可变数组(不定长数组)继承关系不可变数组:Array -> FallbackArrayBuilding -> ArraySeq -> IndexedSeq -> Seq -> Iter

2020-08-17 18:31:35 30

原创 Scala编程——第10章:Scala集合——集合简介(1)

Scala集合———集合简介(1)一、主要的集合特质二、 不可变集合三、可变集合四、构建集合实例五、参考资料本章将学习Scala的集合,共6小节。主要包含以下内容:1.集合简介2.数组Array3.列表List4.元组Tuple5.集Set6.映射Map本节主要学习集合的概念、集合继承关系等等。一、主要的集合特质Scala 所有集合类都可以在 scala.collection 包中找到:包中的集合分为两大类:可变集合 和 不可变的集合,下图展示了这个包中所有的集合类,这些都是高级

2020-08-17 11:53:24 64

原创 Scala编程——第九章:面向对象编程(高级部分)——特质

面向对象编程(高级部分)—— 特质(3)todo

2020-08-17 09:53:38 18

原创 Scala编程——第九章:面向对象编程(高级部分)——包

面向对象编程中级——包(3)todo

2020-08-17 09:46:57 19

原创 Scala编程——第九章:面向对象编程(高级部分)——类的继承

面向对象编程(高级部分)——类的继承(2)todo

2020-08-17 09:43:46 16

原创 Scala编程——第九章:面向对象编程(高级部分)—— Scala静态概念

面向对象编程中级——Scala静态概念一、静态概念1.单例对象2.伴生对象3.apply方法4.应用程序的对象面向对象编程中级部分,主要学习Scala中的静态概念、类的继承等相关知识。一、静态概念1.单例对象Scala比Java 更具有面向对象的特点,Scala的类不允许有静态( static )成员。Scala虽然没有静态方法或者静态字段。对此类使用场景, Scala提供Object语法(单例对象)来达到相同的目的。单例对象(singleton object) de 定义看上去和类相似,使用

2020-08-11 15:59:44 39

原创 Scala常见问题

Scala常见问题一、常见问题二、常用工具记录工作中在Scala遇到的常见问题。一、常见问题二、常用工具1. 在线反编译工具:方便快速的将Scala代码反编译成Java代码,方便理解Scala语法http://www.javadecompilers.com/...

2020-08-11 14:23:41 24

原创 Scala编程——第八章:面向对象编程(初级部分)

面向对象编程(初级部分)一、预备知识二、类与对象1.类与对象的关系2.类的定义3.属性(成员变量)4. 对象本章开始学习Scala面向对象编程内容,内容分成初级、中级、高级部分。一、预备知识Java是面向对象的编程语言,由于历史原因,Java中还存在着非面向对象的内容:基本类型 ,null,静态方法等。Scala语言来自于Java,所以天生就是面向对象的语言,而且Scala是纯粹的面向对象的语言,即在Scala中,一切皆为对象。二、类与对象1.类与对象的关系类是抽象的,概念的,代表一类事

2020-08-06 15:18:16 36

原创 695.岛屿的最大面积——DFS详解+网格类题目通用解法

695.岛屿的最大面积一、题目二、分析三、题解四、复杂度一、题目给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0],

2020-08-04 18:48:47 35

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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