Hive

hive-etl开发模板

本秂侑毒 提交于 2020-10-19 10:36:10
hive-etl开发模板 #!/bin/bash . /home/anjianbing/soft/functions/wait4FlagFile.sh # =========================================================================== # 程序名称: # 功能描述: 城市每日完成订单数 # 输入参数: 运行日期 # 目标表名: app.app_order_city_d # 数据源表: dw.dw_order # 创建人: 安坚兵 # 创建日期: 2015-12-21 # 版本说明: v1.0 # 代码审核: # 修改人名: # 修改日期: # 修改原因: # 修改列表: # =========================================================================== ### 1.参数加载 exe_hive="hive" if [ $# -eq 1 ] then day_01=`date --date="${1}" +%Y-%m-%d` else day_01=`date -d'-1 day' +%Y-%m-%d` fi syear=`date --date=$day_01 +%Y` smonth=`date --date=$day_01 +%m`

日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比

岁酱吖の 提交于 2020-10-17 23:35:18
参考文章: 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比 盖 娅广告匹配系统(GaeaAD)用于支撑盖娅互娱全平台实时广告投放系统,需要将广告数据和游戏 SDK 上报的信息进行近实时匹配,本质上来说需要实时的根据各个渠道的广告投放与相应渠道带来的游戏玩家数据进行计算,实现广告转化效果分钟级别的展现及优化。 初期的 MySQL 存储方案 在系统设计之初,基于对数据量的预估以及简化实现方案考虑,我们选用了高可用的 MySQL RDS 存储方案,当时的匹配逻辑主要通过 SQL 语句来实现,包含了很多联表查询和聚合操作。当数据量在千万级别左右,系统运行良好,基本响应还在一分钟内。 遭遇瓶颈,寻找解决方案 然而随着业务的发展,越来越多游戏的接入,盖娅广告系统系统接收数据很快突破千万/日,高峰期每次参与匹配的数据量更是需要翻几个番,数据库成为了业务的瓶颈。由于此时,整个技术架构出现了一些问题: 1. 单次匹配耗时已从原本的 10 秒左右增加到 2 分钟以上,最慢的聚合查询甚至达到 20 分钟,时效性受到严重挑战。而且 MySQL 的问题是查询的时间随着数据量的增长而增长,以至于数据量越大的情况下查询越慢。 2. 随着历史数据的积累,单表数据很快达到亿级别,此时单表的读写压力已经接近极限。 3. 由于第一点提到的查询性能问题以及单机的容量限制,需要定时删除数据

别再写一摞if-else了!再写开除!两种设计模式带你消灭它!

不问归期 提交于 2020-10-17 02:59:56
代码洁癖狂们!看到一个类中有几十个if-else是不是很抓狂? 设计模式学了用不上吗?面试的时候问你,你只能回答最简单的单例模式,问你有没有用过反射之类的高级特性,回答也是否吗? 这次就让设计模式(模板方法模式+工厂模式)和反射助你消灭if-else! 真的是开发中超超超超超超有用的干货啊! 那个坑货 某日,码农胖滚猪接到上级一个需求,这个需求牛逼了,一站式智能报表查询平台,支持mysql、pgxl、tidb、hive、presto、mongo等众多数据源,想要啥数据都能通通给你查出来展示,对于业务人员数据分析有重大意义! 虽然各个数据源的参数校验、查询引擎和查询逻辑都不一样,但是胖滚猪对这些框架都很熟悉,这个难不倒她,她只花了一天时间就都写完了。 领导胖滚熊也对胖滚猪的效率表示了肯定。可是好景不长,第三天,领导闲着没事,准备做一下code review,可把胖滚熊惊呆了,一个类里面有近30个if-else代码,我滴个妈呀,这可让代码洁癖狂崩溃了。 // 检验入参合法性 Boolean check = false; if(DataSourceEnum.hive.equals(dataSource)){ check = checkHiveParams(params); } else if(DataSourceEnum.tidb.equals(dataSource)){ check =

奈学教育《大数据开发工程师》课程大纲

时光毁灭记忆、已成空白 提交于 2020-10-16 05:09:09
本课程针对企业不同数据规模技术方案进行讲解,紧贴企业热门需求,深入讲解企业级大数据技术的数据存储技术、数据采集技术、数据处理技术、任务调度技术等;课程针对知识点进行企业级案例式教学,理论结合实战,从0到1构建大数据生态技术的方方面面,内容涵盖大数据平台、Spark、Flink、OLAP等核心技术;用真实的企业级实时数仓项目、离线数仓项目、PB级实时用户行为分析系统、千亿级实时广告系统等多个大型项目,把大数据生态技术知识串连起来,让学员形成自己的技术栈,真正成为企业级的大数据开发工程师! 阶段一:小规模数据处理篇 第一单元 掌握Python基础语法 集合类型 条件,循环 文件操作 函数和函数式编程 面向对象 第二单元 掌握NumPy进行数据分析 NumPy基本使用 Numpy进阶知识 第三单元 掌握Pandas进行数据分析 Pandas基础知识 Series数据结构 DataFrame数据结构 综合案例演示 阶段二:中等规模数据处理篇 第四单元 掌握Elastichsearch核心设计 Elastichsearch总体架构设计 Elastichsearch核心流程分析 Elastichsearch核心概念详解 第五单元 掌握Elastichsearch API使用与调优 Elastichsearch语法详解 Elastichsearch容错原理剖析

大数据简介,技术体系分类整理

独自空忆成欢 提交于 2020-10-15 00:44:48
本文源码: GitHub·点这里 || GitEE·点这里 一、大数据简介 1、基础概念 大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据技术则主要用来解决海量数据的存储和分析。 2、特点分析 大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 3、发展过程 Google在2004年前后发表的三篇论文,分别是文件系统GFS、计算框架MapReduce、NoSQL数据库系统BigTable。海量数据文件,分析计算,并存储,确立了大数据的基本原理和思路。 天才程序员DougCutting,也是Lucene、Nutch项目发起人。根据Google论文原理初步实现类似GFS和MapReduce的功能,后来发展成为大名鼎鼎的Hadoop。 再后来,Hadoop经过高速的发展,已经形成一个生态体系,基于Hadoop之上,有实时计算,离线计算,NoSQL存储,数据分析,机器学习等一系列内容。 从这一系列事情发展看技术规律:Google业务实践中创造性的提出论文作为基础,业务的成长和需求,迫使技术不断更新换代。所以业务是技术不断发展的关键。 二、Hadoop框架

项目

痞子三分冷 提交于 2020-10-07 07:54:36
数仓项目 我们的数仓项目从数据来源来说分为两类,用户行为日志(web端,微信小程序,APP,前端页面埋点)和业务数据库,从技术架构上说,分为ods,dwd,dws,ads层. (1) ODS层是一个数据采集汇聚层,操作的是最原始的数据,主要的任务是:用flume采集第三方日志,和用sqoop进行业务数据库的抽取,要与原始的数据保持一致,采集过来的数据以json格式存储,一般存储的周期为三个月. (2) DWD层是一个明细层,对ods层的原始数据进行预处理,做ETL处理后的扁平化明细数据,主要的工作是对数据进行清洗过滤: 去除json数据体中的废弃字段(前端开发人员在埋点设计方案变更后遗留的无用字段)2. 过滤掉json格式不正确的脏数据3. 过滤掉日志中account及deviceid全为空的记录(如果是wx日志,过滤account+openid)4. 过滤掉日志中缺少关键字段(properties(事件属性)/eventid(事件id)/sessionid(会话id)的记录!5. 过滤掉日志中不符合时间段的记录(由于app上报日志可能的延迟,有数据延迟到达)6. 对于web端日志,过滤爬虫请求数据(通过useragent(浏览器标识)标识来分析)7. session分割,如果两个时间之间的间隔距离大于30分钟,就切割成两个会话.8. json数据扁平化

奈学教育《大数据架构师》课程大纲

独自空忆成欢 提交于 2020-10-07 07:09:37
深度剖析了各个基础技术的源码(ZooKeeper、Hive、Spark、Flink、Hadoop等),对这些基础技 术知识动态的排列组合,形成大数据全局架构观,并深入讲述大数据全局架构设计的方方面面,打 造真正满足企业万亿级海量数据规模的数据中台,真正赋能前台业务。同时,在企业万亿级真实项 目落地环节,采用高性能、高可用、高扩展的架构设计原则,技术上更是融合了企业级主流的离线 架构和实时架构,带领大家构建PB级的大数据中台,真正落地“企业千亿级的数据仓库中台”,实现 “企业级数据中心平台”,搞定“企业千亿级广告统一数据流智能分析平台”,掌握“企业级Hadoop平 台全方位二次源码开发”,让学员面对企业各种海量复杂业务场景,给出优雅的大数据架构设计方 案,从而真正成为企业级大数据架构师! ​ 第一阶段:分布式协调组件 第一单元 掌握ZooKeeper的核心设计 ZooKeeper生态体系结构 ZooKeeper总体架构设计 ZooKeeper读写请求流程深度剖析 第二单元 掌握ZooKeeper服务端源码流程 ZooKeeper启动流程源码深度剖析 Master选举算法源码深度剖析 服务端通信模型源码深度剖析 第三单元 掌握ZooKeeper客户端源码流程 客户端启动流程源码剖析 客户端通信模型源码剖析 Session管理机制源码剖析 第四单元 掌握ZooKeeper企业应用

数仓理论SCD(缓慢变化维度)

放肆的年华 提交于 2020-10-07 04:52:13
数仓理论SCD(缓慢变化维度) SCD(缓慢变化维): 就是说 维度表是会发生变化的比如说用户资料表,用户会新增也会被注销(或者不在活跃),行政区划维度表也会发生变化,国家成立了雄安新区保定的行政区划就变了,之所以叫缓慢变化维是因为这些变化是相对"缓慢的" 解决方案: 可以使用 拉链表 拉链表: 用户id 备注 首次出现日期 更新日期 有效期 011 二狗 2020-05-10 2020-05-10 2020-05-20 011 二狗 2020-05-10 2020-05-20 9999-12-31 022 屠夫 2020-05-11 2020-05-11 9999-12-31 此为一张用户信息的拉链表, 用户id 用户的主标识 备注 可以扩展成多个字段根据业务 首次出现日期,就是第一次注册的时间 更新日期 用户后续更改了个人信息的日期 这个字段是关键 有效期 这个也是关键 如果是9999的标识是当前的用户状态有效, 如果想查询全部用户信息,条件应该是 有效期='9999-12-31' ,如果想查询2020年5月11日的用户快照,条件应该是 更新日期<='2020-05-11' 有效期>='2020-05-11' 此外拉链表虽然只会新增变化的用户数但是如果用户基数很大,时间一长还是会变得很庞大,而且由于hive不支持update操作,所以要 更新这张表

spark RDD和DataFrame,DataSet区别

无人久伴 提交于 2020-10-07 03:24:57
RDD vs DataFrames vs DataSet 在SparkSQL中Spark为我们提供了两个新的抽象,分别是DataFrame和DataSet。他们和RDD有什么区别呢?首先从版本的产生上来看: RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6) 如果同样的数据都给到这三个数据结构,他们分别计算之后,都会给出相同的结果。不同是的他们的执行效率和执行方式。 在后期的Spark版本中,DataSet会逐步取代RDD和DataFrame成为唯一的API接口。 RDD RDD是一个懒执行的不可变的可以支持Lambda表达式的并行数据集合。 RDD的最大好处就是简单,API的人性化程度很高。 RDD的劣势是性能限制,它是一个JVM驻内存对象,这也就决定了存在GC的限制和数据增加时Java序列化成本的升高。 Dataframe 与RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从API易用性的角度上看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低

Hive的基本介绍以及常用函数

怎甘沉沦 提交于 2020-10-07 01:00:08
一、Hive的简介:    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 优点: 1 ) 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。 2 ) 避免了去写MapReduce,减少开发人员的学习成本。 3 ) Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。 4 ) Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。 5 ) Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 缺点: 1 )Hive的HQL表达能力有限 2 )Hive的效率比较低 二、Hive的架构图 三、Hive的数据类型 基本数据类型:   Hive数据类型 Java数据类型   TINYINT    byte   SMALINT    short   INT int   BIGINT     long   BOOLEAN    boolean   FLOAT     float   DOUBLE    double   STRING string   TIMESTAMP 时间类型   BINARY 字节数组 集合   STRUCT 和c语言中的struct类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first