基于Hadoop生态圈的数据仓库实践进阶技术(四).doc

基于Hadoop生态圈的数据仓库实践进阶技术(四).doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Hadoop生态圈的数据仓库实践进阶技术(四)

基于Hadoop生态圈的数据仓库实践 —— 进阶技术(四) 四、角色扮演维度 当一个事实表多次引用一个维度表时会用到角色扮演维度。例如,一个销售订单有一个是订单日期,还有一个交货日期,这时就需要引用日期维度表两次。 本节将说明两类角色扮演维度的实现,分别是表别名和数据库视图。这两种都使用了Hive的功能。表别名是在SQL语句里引用维度表多次,每次引用都赋予维度表一个别名。而数据库视图,则是按照事实表需要引用维度表的次数,建立相同数量的视图。 1. 修改数据库模式 使用下面的脚本修改数据库模式。分别给数据仓库里的事实表sales_order_fact和源数据库中订单销售表sales_order增加request_delivery_date_sk和request_delivery_date列。 [sql] view plain copy 在CODE上查看代码片派生到我的代码片 -- in hive USE dw; -- sales_order_fact表是ORC格式,增加列需要重建数据 ALTER TABLE sales_order_fact RENAME TO sales_order_fact_old; CREATE TABLE sales_order_fact ( order_sk INT comment order surrogate key, customer_sk INT comment customer surrogate key, product_sk INT comment product surrogate key, order_date_sk INT comment date surrogate key, request_delivery_date_sk INT comment request delivery date surrogate key, order_amount DECIMAL(10 , 2 ) comment order amount, order_quantity INT COMMENT order_quantity ) CLUSTERED BY (order_sk) INTO 8 BUCKETS STORED AS ORC TBLPROPERTIES (transactional=true); INSERT INTO sales_order_fact SELECT order_sk, customer_sk, product_sk, order_date_sk, NULL, order_amount, order_quantity FROM sales_order_fact_old; DROP TABLE sales_order_fact_old; USE rds; ALTER TABLE sales_order ADD COLUMNS (request_delivery_date DATE COMMENT request delivery date) ; -- in mysql USE source; ALTER TABLE sales_order ADD request_delivery_date DATE AFTER order_date ; 修改后源数据库模式如下图所示。 Hive不能像MySQL那样指定新增列的位置,它新增的列都是在表的最后。 2. 重建Sqoop作业 使用下面的脚本重建Sqoop作业,增加request_delivery_date列。 [plain] view plain copy 在CODE上查看代码片派生到我的代码片 last_value=`sqoop job --show myjob_incremental_import --meta-connect jdbc:hsqldb:hsql://cdh2:16000/sqoop | grep incremental.last.value | awk {print $3}` sqoop job --delete myjob_incremental_import --meta-connect jdbc:hsqldb:hsql://cdh2:16000/sqoop sqoop job \ --meta-connect jdbc:hsqldb:hsql://cdh2:1

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档