码迷,mamicode.com
首页 > 其他好文 > 详细

数据仓库 ODS原始数据层操作

时间:2020-06-25 13:53:34      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:create   压缩   nal   加载   删掉   ignore   targe   ado   统一   

ODS(Operational Data Store):原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。

在ODS一般需要2个重要的步骤,示例如下:

1.建立ODS层的Hive表。

drop table if exists ods_start_log;
CREATE EXTERNAL TABLE ods_start_log (`line` string)
PARTITIONED BY (`dt` string)
STORED AS
  INPUTFORMAT com.hadoop.mapred.DeprecatedLzoTextInputFormat
  OUTPUTFORMAT org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
LOCATION /warehouse/gmall/ods/ods_start_log;

重要说明:

①ODS层存放的是原始数据,因此只需要一个字段就行。

②ODS层的数据来源于HDFS,里面存储的文件带有压缩,因此需要指明相应的压缩方式。Hive的LZO压缩参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO

③在多人操作一张Hive表时,最好建立外部表,防止删表时将其中的数据也删掉了。

④几乎所有数仓的表,都是分区表,每天一个区。

⑤LOCATION只是指明此项目的数据放在那里统一管理,与内外部表没有关系。

 

2 编写将数据导入上述表中的脚本。

#!/bin/bash

APP=gmall
hive=/opt/module/hive/bin/hive

if [ -n $1 ] ;then
        do_date=$1
else
        do_date=date -d "-1 day" +%F
fi

sql="
load data inpath /origin_data/gmall/log/topic_start/$do_date into table "$APP".ods_start_log partition(dt=$do_date);
load data inpath /origin_data/gmall/log/topic_event/$do_date into table "$APP".ods_event_log partition(dt=$do_date);
"

$hive -e "$sql"

重要说明:

①-n是为了判断有没有这个参数

②数仓一般需要导入前一天的数据,因此在日期处理上需要减一天,同时进行格式化。

③表名前需要加上库名,否则会去默认的default库里找。

④hive -e可以直接执行sql。

 

 

 

技术图片

 

数据仓库 ODS原始数据层操作

标签:create   压缩   nal   加载   删掉   ignore   targe   ado   统一   

原文地址:https://www.cnblogs.com/noyouth/p/13191580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!