基于hadoop生态圈的数据仓库实践
文章平均质量分 91
在流行的大数据分布式存储和计算平台Hadoop上设计实现数据仓库。将传统数据仓库建模与SQL开发的简单性与大数据技术相结合,快速、高效地建立可扩展的数据仓库及其应用系统。
wzy0623
25年的数据库、数据仓库、大数据相关工作。《Hadoop构建数据仓库实践》、《HAWQ数据仓库与数据挖掘实战》、《SQL机器学习库——MADlib技术解析》、《MySQL高可用实践》、《Kettle构建Hadoop ETL》、《Greenplum构建实时数据仓库实践》作者。
展开
-
Hive/Spark小文件解决方案(企业级实战)
原文链接:https://mp.weixin.qq.com/s/m4NPnZaKJMXKrTwtZoOQeQ程序产生小文件的原因程序运行的结果最终落地有很多的小文件,产生的原因: 读取的数据源就是大量的小文件 动态分区插入数据,会产生大量的小文件,从而导致map数量剧增 Reduce/Task数量较多,最终落地的文件数量和Reduce/Task的个 数是一样的 小文件带来的影响 文件的数量决定了Map...转载 2021-01-17 11:35:09 · 1592 阅读 · 0 评论 -
Kettle与Hadoop(九)提交Spark作业
实验目的:配置Kettle向Spark集群提交作业。实验环境:Spark History Server:172.16.1.126Spark Gateway:172.16.1.124172.16.1.125172.16.1.126172.16.1.127PDI:172.16.1.105Hadoop版本:CDH 6.3.1Spark版本:2.4.0-cdh6.3.1PDI版本:8.3Kettle连接CDH参见“https://wxy0327.blog.csdn.net/a原创 2020-06-10 10:29:06 · 2285 阅读 · 0 评论 -
Kettle与Hadoop(八)执行Oozie作业
1. 打开PDI,新建一个作业,如图1所示。图12. 编辑'Oozie job executor'作业项,如图2所示。图2 说明:CDH631是已经建好的Hadoop集群连接,参见“https://wxy0327.blog.csdn.net/article/details/106406702#%E4%BA%8C%E3%80%81%E8%BF%9E%E6%8E%A5Hadoop%E9%9B%86%E7%BE%A4”。 'Enable Blocking'选项将阻止转换的其...原创 2020-06-09 10:12:55 · 1136 阅读 · 0 评论 -
Kettle与Hadoop(七)执行Sqoop作业
目录一、Sqoop export二、Sqoop import一、Sqoop export1. 建立一个作业,将HDFS文件导出到MySQL数据库。(1)打开PDI,新建一个作业,如图1所示。图1(2)编辑'Sqoop export'作业项,如图2所示。图2 说明:CDH631是已经建好的Hadoop集群连接,参见“https://wxy0327.blog.csdn.net/article/details/106406702#%E4%BA%8C%E...原创 2020-06-08 10:17:55 · 1744 阅读 · 1 评论 -
Kettle与Hadoop(六)执行HiveQL语句
1. 建立hive表,导入原始数据,过程参考https://blog.csdn.net/wzy0623/article/details/106471124#2.%20%E5%90%91Hive%E5%AF%BC%E5%85%A5%E6%95%B0%E6%8D%AE。2. 建立一个作业,查询hive表,并将聚合数据写入一个hive表。(1)打开PDI,新建一个作业,如图1所示。图1(2)编辑'SQL'作业项,如图2所示。图2 说明:hive_cdh631是已经建好...原创 2020-06-04 10:20:05 · 749 阅读 · 0 评论 -
Kettle与Hadoop(五)执行MapReduce
目录一、示例1——格式化原始web日志1. 准备文件与目录2. 建立一个用于Mapper的转换3. 建立一个调用MapReduce步骤的作业,使用mapper转换,仅运行map作业。4. 执行作业并验证输出二、示例2——生成聚合数据集1. 准备文件与目录2. 建立一个用于Mapper的转换3. 建立一个用于Reducer的转换4. 建立一个调用MapReduce步骤的作业,调用mapper和reducer转换。5. 执行作业并验证输出参考:一、示例1——格原创 2020-06-02 15:16:14 · 1198 阅读 · 0 评论 -
Kettle与Hadoop(四)导入导出Hadoop集群数据
目录一、向Hadoop集群导入数据(Hadoop copy files)1. 向HDFS导入数据2. 向Hive导入数据二、从Hadoop集群抽取数据1. 把数据从HDFS抽取到RDBMS2. 把数据从Hive抽取到RDBMS参考:一、向Hadoop集群导入数据(Hadoop copy files)1. 向HDFS导入数据从下面的地址下载web日志示例文件,解压缩后的weblogs_rebuild.txt文件放到/root/big_data目录下。http://wi原创 2020-06-01 14:14:59 · 1897 阅读 · 0 评论 -
Kettle与Hadoop(三)连接Hadoop
目录一、环境说明二、连接Hadoop集群三、连接Hive四、连接Impala五、后续(建立MySQL数据库连接) Kettle可以与Hadoop协同工作。让我们从简单的开始,本文介绍如何配置Kettle访问Hadoop集群(HDFS、MapReduce、Zookeeper、Oozie等),以及Hive、Impala等数据库组件。所有操作都以操作系统的root用户执行。一、环境说明1. Hadoop 已经安装好4个节点的CDH 6.3.1,IP地...原创 2020-05-28 16:04:06 · 5453 阅读 · 3 评论 -
Kettle与Hadoop(二)Kettle安装配置
目录一、安装Java二、安装Kettle三、运行Kettle程序1. 安装Linux图形环境2. 安装配置VNC Server3. 在客户端使用vncviewer连接系统4. 执行spoon.sh四、给Spoon创建一个桌面快捷启动方式五、配置1. 配置文件和.kettle目录(1).spoonrc(2)jdbc.properties(3)kettle.properties(4)kettle.pwd(5)repositories.xml(6)s原创 2020-05-28 10:36:06 · 2898 阅读 · 0 评论 -
Kettle与Hadoop(一)Kettle简介
目录一、Kettle设计原则二、转换1. 步骤2. 转换的跳3. 并行4. 数据行5. 数据转换(1)Date和String的转换(2)Numeric和String的转换(3)其它转换三、作业1. 作业项2. 作业跳3. 多路径和回溯4. 并行执行5. 作业项结果四、转换或作业的元数据五、数据库连接1. 一般选项2. 特殊选项3. 关系数据库的力量4. 连接和事务5. 数据库集群六、工具七、资源库八、虚拟原创 2020-05-26 14:59:08 · 4038 阅读 · 1 评论 -
phoenix中日期与时间戳的相关转换
日期转时间戳:select to_char(to_number(to_date('2020-03-01','yyyy-MM-dd','GMT+8'))/1000,'##########');时间戳转日期:to_char(CONVERT_TZ(to_date('1582992000','s'), 'UTC', 'Asia/Shanghai'),'yyyy-MM-dd HH:mm:ss...原创 2020-04-24 13:51:40 · 4909 阅读 · 0 评论 -
在CDH 6.3.1上安装HAWQ 2.4.0
目录一、安装环境二、选择HAWQ主机三、安装前准备1. 建立gpadmin用户和HAWQ主目录2. 创建HAWQ的本地数据目录3. 安装依赖包三、安装HAWQ1. 下载安装包2. 解压并安装四、配置HAWQ1. 创建HAWQ的HDFS数据目录2. 修改配置文件3. 添加slaves4. 将配置文件复制到其它主机五、配置OS内核参数与限制...原创 2020-03-13 17:41:38 · 1228 阅读 · 1 评论 -
CDH 6.3.1整合Zeppelin 0.8.2
Zeppelin是一个基于Web的笔记本,可以直接在浏览器中编写代码,对数据进行查询分析并生成报表或图表,做出数据驱动的、交互、协作的文档,并且可以共享笔记。Zeppelin提供了内置的Apache Spark集成,提供的功能有:自动引入SparkContext 和 SQLContext 从本地文件系统或maven库载入运行时依赖的jar包。 可取消Spark作业和展示...原创 2020-03-11 11:12:22 · 2310 阅读 · 0 评论 -
在CDH 6.3中安装Phoenix服务
目录一、下载并安装Phoenix parcel二、安装CSD文件三、在Cloudera Manager中添加Phoenix服务(前提是已经安装了HBase服务)四、配置HBase以用于Phoenix五、验证Phoenix安装参考:一、下载并安装Phoenix parcel1. 登录Cloudera Manager,点“群集”->“Parcel”,进入Parce...原创 2020-03-10 08:04:44 · 4933 阅读 · 9 评论 -
一键式完全删除CDH 6.3.1
CDH集群的安装部署虽然步骤比较多,但只要严格按照文档操作,一般不会有太大问题。然而,如果安装过程中出错,或因为其它原因需要重新安装CDH,在不重装操作系统的前提下,是比较困难的。难点在于需要删除的东西太多,不删干净了非常容易造成安装失败。网上找的所谓“CDH完全卸载”其实都不够完全。经过一天的反复尝试,终于写了一个一键式删除CDH脚本,在我自己的测试环境下是可行的。删除脚本文件r...原创 2019-11-07 06:03:02 · 3720 阅读 · 1 评论 -
基于hadoop生态圈的数据仓库实践 —— 进阶技术(十七)
十七、分段维度 本节说明分段维度的实现技术。分段维度包含连续值的分段。例如,年度销售订单分段维度可能包含有叫做“低”、“中”、“高”的三档;各档定义分别为0.01到15000、15000.01到30000.00、30000.01到99999999.99。如果一个客户的年度销售订单金额为10000,则被归为“低”档。 分段维度可以存储多个分段集合。例如,可能有一个用于促销原创 2016-08-11 17:01:10 · 4552 阅读 · 1 评论 -
基于hadoop生态圈的数据仓库实践 —— 进阶技术(十六)
十六、累积的度量 本篇说明如何实现累积月底金额,并对数据仓库模式和初始装载、定期装载脚本做相应地修改。累积度量是半可加的,而且它的初始装载比前面做的要复杂的多。 可加、半可加、不可加事实 事实表中的数字度量可划分为三类。最灵活、最有用的度量是完全可加的,可加性度量可以按照与事实表关联的任意维度汇总。半可加度量可以对某些维度汇总,但不能对所有维度汇总。差额是原创 2016-08-10 18:09:45 · 3789 阅读 · 2 评论 -
基于hadoop生态圈的数据仓库实践 —— 进阶技术(十五)
十五、维度合并 随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中。例如,客户维度的客户地址相关信息、送货地址相关信息和工厂维度里都有邮编、城市和州。本节说明如何把三个维度里的邮编相关信息合并到一个新的维度。1. 修改数据仓库模式 为了合并维度,需要改变数据仓库模式。下图显示了修改后的模式。新增了一个zip_code_dim表,sales_order_f原创 2016-08-09 18:21:48 · 5996 阅读 · 3 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(十四)
十四、迟到的事实 装载日期在生效日期后的事实就是迟到的事实。晚于订单日期进入源数据的销售订单可以看做是一个迟到事实的例子。销售订单被装载进其事实表时,装载的日期晚于销售订单的订单日期,因此是一个迟到的事实。(因为定期装载的是前一天的数据,所以这里的晚于指的是晚2天及其以上。) 迟到事实影响周期快照事实表的装载,如进阶技术(五) “快照”中讨论的month_end_sal原创 2016-08-08 18:12:57 · 4215 阅读 · 2 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(十三)
十三、无事实的事实表 本节讨论一种技术,用来处理源数据中没有度量的需求。例如,产品源数据不包含产品数量信息,如果系统需要得到产品的数量,很显然不能简单地从数据仓库中直接得到。这时就要用到无事实的事实表技术。使用此技术可以通过持续跟踪产品的发布来计算产品的数量。可以创建一个只有产品(计什么数)和日期(什么时候计数)维度代理键的事实表。之所以叫做无事实的事实表是因为表本身并没有度量。1.原创 2016-08-05 15:31:51 · 3163 阅读 · 0 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(十二)
十二、间接数据源 本节讨论如何处理间接数据源。间接数据源与维度表具有不同的粒度,因此不能直接装载进数据仓库。在这里通过修改进阶技术(八)——“多路径和参差不齐的层次”里的促销源数据说明怎样处理间接数据源。CAMPAIGN SESSION,MONTH,YEAR2016 First Campaign,1,20162016 First Campaign,2,20162016 Firs原创 2016-08-04 17:23:49 · 4250 阅读 · 1 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(十一)
十一、多重星型模式 从“进阶技术”开始,已经通过增加列和表扩展了数据仓库,在进阶技术(五) “快照”里增加了第二个事实表,month_end_sales_order_fact表。这之后数据仓库模式就有了两个事实表(第一个是在开始建立数据仓库时创建的sales_order_fact表)。有了这两个事实表的数据仓库就是一个标准的双星型模式。本节将在现有的维度数据仓库上再增加一个新的星型结原创 2016-08-04 14:26:03 · 2786 阅读 · 1 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(十)
十、杂项维度 本节讨论杂项维度。简单地说,杂项维度就是一种包含的数据具有很少可能值的维度。例如销售订单,它可能有很多离散数据(yes-no这种类型的值),如verification_ind(如果订单已经被审核,值为yes)credit_check_flag(表示此订单的客户信用状态是否已经检查)new_customer_ind(如果这是新客户的首个订单,值为yes)web_order原创 2016-08-01 16:16:40 · 5150 阅读 · 0 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(九)
九、退化维度 本节讨论一种称为退化维度的技术。该技术减少维度的数量,简化维度数据仓库模式。简单的模式比复杂的更容易理解,也有更好的查询性能。当一个维度没有数据仓库需要的任何数据时就可以退化此维度,此时需要把退化维度的相关数据迁移到事实表中,然后删除退化的维度。1. 退化订单维度 本小节说明如何退化订单维度,包括对数据仓库模式和定期装载脚本的修改。使用维度退化技术时你首先原创 2016-08-01 13:12:48 · 4457 阅读 · 0 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(八)
八、多路径和参差不齐的层次 本节讨论多路径层次,它是对单路径层次的扩展。上一节里数据仓库的月维度只有一条层次路径,即年-季度-月这条路径。在本节中加一个新的级别——促销期,并且加一个新的年-促销期-月的层次路径。这时月维度将有两条层次路径,因此具有多路径层次。本节讨论的另一个主题是不完全层次,这种层次在它的一个或多个级别上没有数据。1. 增加一个层次 下面的脚本给mon原创 2016-07-29 13:16:39 · 3479 阅读 · 3 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(七)
七、递归 数据仓库中的关联实体经常表现为一种“父—子”关系。在这种类型的关系中,一个父亲可能有多个孩子,而一个孩子只能属于一个父亲。例如,一个人只能被分配到一个部门,而一个部门可能被分配许多人。“父—子”之间是一种递归型树结构,是一种最理想、最灵活的存储层次树的数据结构。本节说明一些递归处理的问题,包括数据装载、树的展开、递归查询、树的平面化等技术实现。为了保持销售订单示例的完整性,原创 2016-07-28 14:31:22 · 4705 阅读 · 2 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(六)
六、维度层次 大多数维度都具有一个或多个层次。例如,日期维度就有一个四级层次:年、季度、月和日。这些级别用date_dim表里的列来表示。日期维度是一个单路径层次,因为除了年-季度-月-日这条路径外,它没有任何其它层次。本节讨论在维度的层次上进行分组和钻取查询。多路径层次在下一节“多路径和参差不齐的层次”中讨论。 为了识别数据仓库里一个维度的层次,首先要理解维度中列的含原创 2016-07-25 13:51:48 · 3987 阅读 · 0 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(五)
五、快照 前面实验说明了处理维度的扩展。本节讨论两种事实表的扩展技术。 有些用户,尤其是管理者,经常要看某个特定时间点的数据。也就是说,他们需要数据的快照。周期快照和累积快照是两种常用的事实表扩展技术。 周期快照是在一个给定的时间对事实表进行一段时期的总计。例如,一个月销售订单周期快照汇总每个月底时总的销售订单金额。 累积快照用于跟踪事实表的原创 2016-07-22 11:21:38 · 5447 阅读 · 2 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(四)
四、角色扮演维度 当一个事实表多次引用一个维度表时会用到角色扮演维度。例如,一个销售订单有一个是订单日期,还有一个交货日期,这时就需要引用日期维度表两次。 本节将说明两类角色扮演维度的实现,分别是表别名和数据库视图。这两种都使用了Hive的功能。表别名是在SQL语句里引用维度表多次,每次引用都赋予维度表一个别名。而数据库视图,则是按照事实表需要引用维度表的次数,建立相同原创 2016-07-18 17:32:01 · 10746 阅读 · 1 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(三)
三、维度子集 有些需求不需要最细节的数据。例如更想要某个月而不是某天的记录。再比如相对于全部的销售数据,可能对某些特定状态的数据更感兴趣等。这些特定维度包含在从细节维度选择的行中,所以叫维度子集。维度子集比细节维度的数据少,因此更易使用,查询也更快。 本节中将准备两个特定维度,它们均取自现有的维度:月份维度(日期维度的子集),Pennsylvania州客户维度(客户维度原创 2016-07-18 13:21:25 · 9582 阅读 · 3 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(二)
二、按需装载 前面已经做了“初始装载”和“定期装载”。还有一种需要熟悉的装载类型,按需装载。所谓“按需装载”指的是,在正常调度之外,当源数据有效或者数据仓库需要时进行装载。例如,促销销售源数据只有在促销期内有效,而在其它时间是无效的,而对促销期数据就要进行按需装载。 在“建立数据仓库示例模型”中讨论的日期维度数据生成可以看做是一种按需装载。数据仓库预先装载了日期,当日期原创 2016-07-14 16:11:42 · 5726 阅读 · 1 评论 -
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(一)
一、增加列 数据仓库最常碰到的扩展是给一个已经存在的维度表和事实表添加列。本节说明如何在客户维度表和销售订单事实表上添加列,并在新列上应用SCD2,以及对定时装载脚本所做的修改。假设需要在客户维度中增加送货地址属性,并在销售订单事实表中增加数量度量值。 先看一下增加列时模式发生的变化。 修改后源数据库模式如下图所示。 修改后DW数据库模式如原创 2016-07-13 18:08:25 · 11497 阅读 · 2 评论 -
基于Hadoop生态圈的数据仓库实践 —— ETL(三)
三、使用Oozie定期自动执行ETL1. Oozie简介(1)Oozie是什么 Oozie是一个管理Hadoop作业、可伸缩、可扩展、可靠的工作流调度系统,其工作流作业是由一系列动作构成的有向无环图(DAGs),协调器作业是按时间频率周期性触发的Oozie工作流作业。Oozie支持的作业类型有Java map-reduce、Streaming map-reduce、Pig、 Hive原创 2016-07-11 15:05:16 · 19302 阅读 · 6 评论 -
基于Hadoop生态圈的数据仓库实践 —— ETL(二)
二、使用Hive转换、装载数据1. Hive简介(1)Hive是什么 Hive是一个数据仓库软件,使用SQL读、写、管理分布式存储上的大数据集。它建立在Hadoop之上,具有以下功能和特点:通过SQL方便地访问数据,适合执行ETL、报表、数据分析等数据仓库任务。提供一种机制,给各种各样的数据格式加上结构。直接访问HDFS的文件,或者访问如HBase的其它数据存储。可以通过MapRed原创 2016-07-06 11:46:10 · 19808 阅读 · 12 评论 -
基于Hadoop生态圈的数据仓库实践 —— ETL(一)
一、使用Sqoop抽取数据1. Sqoop简介 Sqoop是一个在Hadoop与结构化数据存储(如关系数据库)之间高效传输大批量数据的工具。它在2012年3月被成功孵化,现在已是Apache的顶级项目。Sqoop有Sqoop1和Sqoop2两代,Sqoop1最后的稳定版本是1.4.6,Sqoop2最后版本是1.99.6。需要注意的是,1.99.6与1.4.6并不兼容,而且截止原创 2016-07-01 22:54:09 · 30276 阅读 · 8 评论 -
基于Hadoop生态圈的数据仓库实践 —— 环境搭建(三)
三、建立数据仓库示例模型 Hadoop及其相关服务安装配置好后,下面用一个小而完整的示例说明多维模型及其相关ETL技术在Hadoop上的具体实现。1. 设计ERD 操作型系统是一个销售订单系统,初始时只有产品、客户、订单三个表,ERD如下图所示。 多维数据仓库包含有一个销售订单事实表,产品、客户、订单、日期四个维度表,ERD如下原创 2016-06-29 16:01:31 · 18852 阅读 · 7 评论 -
基于Hadoop生态圈的数据仓库实践 —— 环境搭建(二)
二、安装Hadoop及其所需的服务1. CDH安装概述CDH的全称是Cloudera's Distribution Including Apache Hadoop,是Cloudera公司的Hadoop分发版本。有三种方式安装CDH:. Path A - 通过Cloudera Manager自动安装. Path B - 使用Cloudera Manager Parcels或Packa原创 2016-06-27 16:16:11 · 5629 阅读 · 3 评论 -
基于Hadoop生态圈的数据仓库实践 —— 环境搭建(一)
一、Hadoop版本选型 主流的Hadoop生态圈有Apache、Cloudera、HortonWorks、MapR几个不同版本,其中Cloudera、HortonWorks、MapR这几个是开源产品的商业分发版,其价值主要体现在两个方面:(1)对Hadoop生态圈中各种各样的组件进行兼容性测试并打包;(2)提供工具简化Hadoop集群的安装和建立。 Had原创 2016-06-25 08:23:16 · 5828 阅读 · 3 评论 -
基于Hadoop生态圈的数据仓库实践 —— 概述(二)
二、在Hadoop上实现数据仓库(大部分翻译自《Big Data Warehousing》) 数据仓库技术出现很长时间了,现在为什么要从传统数据库工具转为使用Hadoop呢?答案就是最引人关注的流行词汇 —— 大数据。对许多组织来说,传统关系数据库已经不能够经济地处理他们所面临的数据量。而Hadoop生态圈就是为了能够廉价处理大量数据的目的应运而生的。下面看看大数据是怎么定义原创 2016-06-25 08:17:01 · 12548 阅读 · 4 评论 -
基于Hadoop生态圈的数据仓库实践 —— 概述(一)
一、什么是数据仓库 一种被广泛接受的数据仓库定义是Bill Inmon在1991年出版的《Building the Data Warehouse》一书中所提出的 —— 数据仓库是一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持决策。它主要的目标是分析和处理数据,和传统的操作型事务处理有很大区别。1. 操作型系统和分析型系统 操作型系统完成原创 2016-06-25 07:45:55 · 10810 阅读 · 5 评论