它建立在Hadoop之上,具有以下功能和特点: 通过SQL方便地访问数据,适合执行ETL、报表、数据分析等数据仓库任务。 提供一种机制,给各种各样的数据格式加上结构。...图中显示了Hadoop 1和Hadoop 2中的两种MapReduce组件。...为了更好地理解Hive如何与Hadoop的基本组件一起协同工作,可以把Hadoop看做一个操作系统,HDFS和MapReduce是这个操作系统的组成部分,而象Hive、HBase这些组件,则是操作系统的上层应用或功能.../init_etl.sh 使用下面的查询验证初始装载的正确性。...sales_order_fact CDC(每天)、拉取 n/a n/a n/a date_dim n/a 预装载 本示例中order_dim维度表和sales_order_fact使用基于时间戳的
第一版Oozie是一个基于工作流引擎的服务器,通过执行Hadoop Map/Reduce和Pig作业的动作运行工作流作业。第二版Oozie是一个基于协调器引擎的服务器,按时间和数据触发工作流执行。...它可以基于时间(如每小时执行一次)或数据可用性(如等待输入数据完成后再执行)连续运行工作流。第三版Oozie是一个基于Bundle引擎的服务器。它提供更高级别的抽象,批量处理一系列协调器应用。...Oozie为以下类型的动作提供支持: Hadoop map-reduce、Hadoop文件系统、Pig、Java和Oozie的子工作流(SSH动作已经从Oozie schema 0.2之后的版本中移除了...所有由动作节点触发的计算和处理任务都不在Oozie之中——它们是由Hadoop的Map/Reduce框架执行的。这种方法让Oozie可以支持现存的Hadoop用于负载平衡、灾难恢复的机制。...一些工作流是根据需要触发的,但是大多数情况下,我们有必要基于一定的时间段和(或)数据可用性和(或)外部事件来运行它们。
Sqoop简介 Sqoop是一个在Hadoop与结构化数据存储(如关系数据库)之间高效传输大批量数据的工具。它在2012年3月被成功孵化,现在已是Apache的顶级项目。...常用的四种CDC方法中有三种是侵入性的,这四种方法是:基于时间戳的CDC、基于触发器的CDC、基于快照的CDC、基于日志的CDC。下表总结了四种CDC方案的特点。...而ETL通常是按一个固定的时间间隔,周期性定时执行的,因此对于整体拉取的方式而言,每次导入的数据需要覆盖上次导入的数据。Sqoop中提供了hive-overwrite参数实现覆盖导入。...那么用哪个字段作为CDC的时间戳呢?设想这样的场景,一个销售订单的订单时间是2015年1月1日,实际插入表里的时间是2015年1月2日,ETL每天0点执行,抽取前一天的数据。...如果按order_date抽取数据,条件为where order_date >= '2015-01-02' AND order_date 的ETL
Hadoop生态圈中有一个叫做Oozie的工具,它是一个Hadoop的工作流调度系统,可以使用它将ETL过程封装进工作流自动执行。...Hadoop生态圈中的主要SQL查询引擎有基于MapReduce的Hive、基于RDD的SparkSQL和基于MPP的Impala等。 用户界面指的是最终用户所使用的接口程序。...基于引擎的ETL工具通常比代码生成的方式更具通用性。Kettle就是一个基于引擎ETL工具的典型例子。...(4)设计灵活性 一个ETL工具应该留给开发人员足够的自由度来使用,而不能通过一种固定的方式限制用户的创造力和设计的需求。ETL工具可以分为基于过程的和基于映射的。...例子里的文件名和通配符的组合将查找zip文件里的所有以.txt结尾的文件 表1-7 VFS文件规范的例子 四、小结 编程和使用工具是常用的开发ETL应用的方法,而ETL工具又有基于映射和基于引擎之分
TDS库表 四、装载日期维度数据 五、小节 ---- 从本篇开始,介绍使用Kettle实现Hadoop数据仓库的ETL过程。...我们会引入一个典型的订单业务场景作为示例,说明多维模型及其相关ETL技术在Kettle上的具体实现。...在本示例中只涉及一个销售订单的业务流程。 (2)声明粒度。ETL处理时间周期为每天一次,事实表中存储最细粒度的订单事务记录。 (3)确认维度。显然产品和客户是销售订单的维度。...如果文件小于Hadoop里定义的块尺寸(Hadoop 2.x缺省是128M),可以认为是小文件。元数据的增长将转化为NameNode的开销。如果有大量小文件,NameNode会成为性能瓶颈。...至此,我们的示例数据仓库模型搭建完成,后面在其上将实现ETL。 五、小节 我们使用一个简单而典型的销售订单示例,建立数据仓库模型。
为了确保数据流的稳定,需要使用所在平台上可用的任务调度器来调度ETL定期执行。调度模块是ETL系统必不可少的组成部分,它不但是数据仓库的基本需求,也对项目的成功起着举足轻重的作用。...绝大多数Hadoop系统都运行在Linux之上,因此本片详细讨论两种Linux上定时自动执行ETL作业的方案。...第一版Oozie是一个基于工作流引擎的服务器,通过执行Hadoop MapReduce和Pig作业的动作运行工作流作业。第二版Oozie是一个基于协调器引擎的服务器,按时间和数据触发工作流执行。...使用Oozie主要基于以下两点原因: 在Hadoop中执行的任务有时候需要把多个MapReduce作业连接到一起执行,或者需要多个作业并行处理。...关于示例环境CDH的安装参见“基于Hadoop生态圈的数据仓库实践 —— 环境搭建(二)”。
一、Hadoop相关的步骤与作业项 在“ETL与Kettle”(https://wxy0327.blog.csdn.net/article/details/107985148)的小结中曾提到...关于CDH集群的安装与卸载,可以参见我的博客“基于Hadoop生态圈的数据仓库实践 —— 环境搭建(二)”和“一键式完全删除CDH 6.3.1”。 ?...Impala是Cloudera公司基于Google Dremel的开源实现。...Kettle支持在Hadoop中执行基于MapReduce的Kettle转换,还支持向Spark集群提交作业。这里演示的例子都是Pentaho官方提供示例。...从下一篇开始,我们将建立一个模拟的Hadoop数据仓库,并用使用Kettle完成其上的ETL操作。
ETL的定义 ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。...ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。...数据不符合分析的要求,所以要准备数据,这个过程就叫ETL。 基于元数据驱动的价值 可以统一数据资产,获取企业数据全局视图。一个好的元数据管理工具,对企业全系统的数据在哪里,都有哪些数据,有一个全局观。...简化etl过程,通过元数据可以构建自动工具,自动基于元数据通过简单的UI操作就可以实现etl过程。简化etl代码编写过程并且etl过程也可以大量的复用。 基于元数据驱动的难点 元数据管理难。...另外,元数据不仅是etl的基础,也是数据质量/数据治理的基础。
基于源数据的CDC 2. 基于触发器的CDC 3. 基于快照的CDC 4. 基于日志的CDC 三、使用Sqoop抽取数据 1. Sqoop简介 2. 使用Sqoop抽取数据 3....Sqoop优化 (1)调整Sqoop命令行参数 (2)调整数据库 四、小结 ---- 本篇介绍如何利用Kettle提供的转换步骤和作业项实现Hadoop数据仓库的数据抽取,即ETL过程中的...在“Kettle构建Hadoop ETL实践(一):ETL与Kettle”里介绍Kettle虚拟文件系统时,我们知道了Kettle使用Apache的通用VFS作为文件处理接口,能够直接读取zip压缩包中的多个文件...常用的四种CDC方法是:基于源数据的CDC、基于触发器的CDC、基于快照的CDC、基于日志的CDC,其中前三种是侵入性的。表5-1总结了四种CDC方案的特点。...}分别表示ETL系统中记录的最后一次数据装载时间和最大自增序列号。
今年的第六届GIAC大会上,在大数据架构专题,腾讯数据平台部实时计算负责人施晓罡发表了《基于Flink的高可靠实时ETL系统》的主题演讲。以下为嘉宾演讲实录: ?...而在Oceanus之上,腾讯大数据还对ETL,监控告警和在线学习等常见的实时计算任务提供了场景化的支持。...而对ETL场景,Oceanus也提供了Oceanus-ETL产品来帮助用户将应用和产品中采集的数据实时地导入到数据仓库中。...实时数据接入平台Oceanus-ETL 腾讯大数据早在2012年起就开始了进行数据接入的工作,并基于Storm构建了第一代的腾讯数据银行(TDBank),成为了腾讯大数据平台的第一线,提供了文件、消息和数据库等多种接入方式...基于Flink实现端到端Exactly Once传输 Flink通过检查点(Checkpoint)机制来进行任务状态的备份和恢复。
---- 前面文章中,我们用Kettle工具实现了Hadoop多维数据仓库的基本功能,如使用Sqoop作业项、SQL脚本、Hadoop file output、ORC output等步骤实现...ETL过程,使用Oozie、Start作业项定期执行ETL任务等。...除了利用已有的日期维度数据生成月份维度,我们还可以一次性生成日期维度和月份维度数据,只需对“Kettle构建Hadoop ETL实践(四):建立ETL示例模型()”中图4-4的转换稍加修改,如图8-5所示...但是,如果有多个BI工具,连同直接基于SQL的访问,都同时在组织中使用的话,不建议采用语义层别名的方法。当某个维度在单一事实表中同时出现多次时,则会存在维度模型的角色扮演。...与其使用复杂的机制构建难以预测的可变深度层次,不如将其变换为固定深度位置设计,针对不同的维度属性确立最大深度,然后基于业务规则放置属性值。
数据分析的实质就是基于事实表开展计算或聚合操作。 事实表中的数字度量值可划分为可加、半可加、不可加三类。...累积事实表的数据装载需要面对两个挑战:1. ETL过程处理尽量少的数据;2....二是“Hadoop file output”步骤生成的文件名中添加${PRE_DATE}变量以实现增量装载。 4. 测试定期装载作业 (1)修改源数据库的产品表数据。...本例中因为定期装载的是前一天的数据,所以这里的“晚于”指的是事务数据延迟两天及其以上才到达ETL系统。 必须对标准的ETL过程进行特殊修改以处理迟到的事实。...“Hadoop file output”步骤将查询结果输出到month_end_balance_fact表所对应的HDFS目录。
在前一篇里介绍了ETL和Kettle的基本概念,内容偏重于理论。从本篇开始,让我们进入实践阶段。工欲善其事,必先利其器。...既然我们要用Kettle构建Hadoop ETL应用,那么先要做的就是安装Kettle。...本篇首先阐述选择安装环境所要考虑的因素,之后详细介绍Kettle的安装过程,最后说明Kettle配置文件、启动脚本和JDBC驱动管理。本专题后面的实践部分都是基于这里所安装的Kettle之上完成的。...它基于RPM包管理,能够从指定的服务器(在资源库文件中定义)自动下载安装RPM包,并且可以自动处理依赖性关系,一次安装所有依赖的软件包,无须繁琐地一次次下载安装。...与之相反,也可以给某个ETL项目设置一个特定的配置目录,此时需要在运行这个ETL的脚本里设置KETTLE_HOME环境变量。 下面说明每个配置文件的作用。
大家好,又见面了,我是你们的朋友全栈君。
对于数据流的多行输入,尤其在Hive这类Hadoop上的数据库上执行这些步骤,将会慢到无法容忍的地步。...姑且将这种回避问题的处理方式也算作方法之一吧。在开发ETL系统时,ETL开发小组可以向业务用户询问有关忽略这些标志的必要问题,如果它们是微不足道的。...处理这些新增的维度表和外键需要大量修改数据装载脚本,还会增加出错的机会,同时会给ETL的开发、维护、测试过程带来很大的工作量。...假设由于每个标志都与其它标志一起发生作用,在这种情况下浏览单一维度内的标识可能没什么意义。但是杂项维度可提供所有标识的存储,并用于基于这些标识的约束和报表。...组织还可能使用为其客户打分的方法刻画客户行为。分段维度模型通常以不同方式按照积分将客户分类,例如,基于他们的购买行为、支付行为、流失走向等。每个客户用所得的分数标记。
集群转换中的分区 五、小结 ---- 本专题前面系列文章详细说明了使用Kettle的转换和作业,实现Hadoop上多维数据仓库的ETL过程。...通常Hadoop集群存储的数据量是TB到PB,如果Kettle要处理如此多的数据,就必须考虑如何有效使用所有的计算资源,并在一定时间内获取执行结果。...一、数据分发方式与多线程 在“Kettle与Hadoop(一)Kettle简介”中,我们知道了转换的基本组成部分是步骤,而且各个步骤是并行执行的。.../carte.sh ~/kettle_hadoop/slave1.xml 命令执行在控制台输出的最后信息如下,表示子服务器已经启动成功。...例如在一个记录行里,如果有 “73” 标识的用户身份,而且有3个分区定义,这样这个记录行属于分区1,编号30属于分区0,编号14属于分区2。需要指定基于分区的字段。
由于本示例中Kettle在Hadoop上的ETL实现依赖于Hive,所以之后对Hive做一个概括的介绍,包括它的体系结构、工作流程和优化。...在“Kettle构建Hadoop ETL实践(四):建立ETL示例模型”中,我们建立了Hive库表以存储销售订单示例的过渡区和数据仓库数据,并介绍了Hive支持的文件格式、表类型以及如何支持事务处理。...Kettle处理Hadoop ETL依赖于Hive,因此有必要系统了解一下Hive的基本概念及其体系结构。...它建立在Hadoop之上,具有以下功能和特点: 通过HiveQL方便地访问数据,适合执行ETL、报表查询、数据分析等数据仓库任务。 提供一种机制,给各种各样的数据格式添加结构。...但考虑到Hadoop本身就只适合大数据量的批处理任务,再加上Hive的性能问题一直就被诟病,也就不必再吐槽了。至此,ETL过程已经实现,下一篇将介绍如何定期自动执行这个过程。
0 前言 Apache NiFi 是广泛使用的数据流管理工具,也可以实现ETL功能....本次将讨论如何在NiFi实现ETL过程中实现转换功能,此处以列名转换为例. 1 应用场景 列名转换是ETL过程中常常遇到的场景。...例如来源表user的主键id,要求写入目标表user的uid字段内,那么就需要列名转换. 2 方案选型 既然限定在 NiFi 框架内,那么只涉及实现方案选型. 2.1 基于执行自定义SELECT SQL...2.2 基于QueryRecord 处理器 场景 适用于使用 NiFi 组件生成SQL的场景 优势 通用性好 语法规范 实现 QueryRecord 的 SQL 形如 select id as uid...from FLOWFILE 2.3 基于ExecuteGroovyScript 等可以执行脚本语言的处理器 场景 适用于要实现复杂转换,且性能要求不高的场景 实现 实现方式因人而异,原理就是在
引言: 传统 ETL 主要以 SQL 为主要技术手段,把数据经抽取、清洗转换之后加载到数据仓库。但是在如今移动互联网大力发展的场景下,产生大量碎片化和不规则的数据。...数据原始文件通过文件导入到基础库,再通过大数据 HQL等技术手段提取出二级库,这中间的数据导入和 SQL ETL 的提取的过程,大量消耗 IO 性能和计算资源,在很多场景下已经是数据处理的瓶颈所在。...普元在实施公安项目过程中开发了一种基于 XML 描述的可编程的函数 ETL 转换方法。主要用于大数据文件处理领域,能从原始数据文件直接、快速加载到专题库的技术手段。...但基于此架构数据处理工作都在下游(即数据使用方)。 面对大量数据对接和众多的数据类型,我们对于每种数据文件解析、解码、清洗消耗大量的人力,并且基于编码的方式对于较多数据类型的场景代码量大,且难以管理。...本架构实现适合以下几个方面: 基于文件的数据对接; 文件无法直接导入到目标数据库,需要做转换,清洗为目标格式; 如上数据对接架构图,Flume 基本实现了基于文件系统的自动扫描和读取,因此架构实现了基于
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库。前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集。.../apache-hive-2.1.1-bin.tar.gz 下载完成后,解压这个压缩包 tar xf apache-hive-2.1.1-bin.tar.gz 按之前Hadoop的惯例,我们还是把Hive...目录下,进入这个目录,我们需要先基于模板新建hive-env.sh文件: cp hive-env.sh.template hive-env.sh vi hive-env.sh 指定Hadoop的路径,增加以下行...: HADOOP_HOME=/usr/local/hadoop 2.4配置hive-site.xml cp hive-default.xml.template hive-site.xml vi hive-site.xml...,在Hadoop中创建Hive需要用到的目录并设置好权限: hadoop fs -mkdir /tmp hadoop fs -mkdir -p /user/hive/warehouse hadoop fs
领取专属 10元无门槛券
手把手带您无忧上云