在dataX-web中循环执行时数据的同步方式
解决中文comment中文乱码
在mysql中
# (0)修改库注释
alter table DBS modify column `desc` varchar(256) character set utf8;
alter table DATABASE_PARAMS modify column PARAM_VALUE varchar(256) character set utf8;
# (1)修改表字段注解和表注解
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
# (2)修改分区字段注解
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
# (3)修改索引注解
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
前置操作:
启动datax-web
cd /export/server/datax-web-2.1.2
./bin/start-all.sh
登陆主页面
http://hadoop01:9527/index.html
输入用户名 admin 密码 123456 就可以直接访问系统。
在datax-web项目管理中添加项目
在任务模板中添加任务模板
添加数据源
全量覆盖
不分区,同步时全部覆盖
适用于数据较少,不会发生变更,仅会新增列或行的情况
例子:全量覆盖----日期维度表
第一步: 在mysql的日期表准备了 700多条数据
第二步: 在hive中建表
第三步: 使用datax 将mysql中的数据 导入到 hive的日期表
第四步: 验证: select count(*) from hive.日期表; -- 700多条
第五步: 通过运行sql脚本 插入2024和2025年的日期数据 -- 365 + 365 = 730 + 730 = 1460 多表
第六步: 使用datax 将mysql中的数据 导入到 hive的日期表
第七步: 验证 select count(*) from hive.日期表; -- 1400多条
建表语句:hive
create table dim.test_dim_base_date_full(
trade_date string comment '日期编码',
year_code int comment '年编码',
month_code int comment '月份编码',
day_code int comment '日编码',
quanter_code int comment '季度编码',
quanter_name string comment '季度名称',
week_trade_date string comment '周一时间',
month_trade_date string comment '月一时间',
week_end_date string comment '周末时间',
month_end_date string comment '月末时间',
last_week_trade_date string comment '上周一时间',
last_month_trade_date string comment '上月一时间',
last_week_end_date string comment '上周末时间',
last_month_end_date string comment '上月末时间',
year_week_code int comment '一年中第几周',
week_day_code int comment '周几code',
day_year_num int comment '一年第几天',
month_days int comment '本月有多少天',
is_weekend int comment '是否周末(周六和周日)',
days_after1 string comment '1天后的日期',
days_after2 string comment '2天后的日期',
days_after3 string comment '3天后的日期',
days_after4 string comment '4天后的日期',
days_after5 string comment '5天后的日期',
days_after6 string comment '6天后的日期',
days_after7 string comment '7天后的日期'
)
row format delimited fields terminated by ','
stored as orc
tblproperties ('orc.compress'='ZLIB');
方式一:datax步骤
构建任务将mysql中dim库的base_data表数据导入到hive中dim库的test_dim_base_date_full中
path 路径:
hive中执行
desc formatted dim.test_dim_base_date_full;
hdfs://hadoop01:8020
/user/hive/warehouse/dim.db/test_dim_base_date_full
构建任务选择模板
结果验证
数据库中查看
在hdfs中也可以查看
再次执行之后 结果还是跟mysql中一样 说明是全量覆盖
方式二:linux步骤
将 json文件内容拷贝出来 且 修改
vim /export/server/datax/job/01_mysql_2_hive_date_full.json
{
"job": {
"setting": {
"speed": {
"channel": 3,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "123456",
"column": [
"`trade_date`",
"`year_code`",
"`month_code`",
"`day_code`",
"`quanter_code`",
"`quanter_name`",
"`week_trade_date`",
"`month_trade_date`",
"`week_end_date`",
"`month_end_date`",
"`last_week_trade_date`",
"`last_month_trade_date`",
"`last_week_end_date`",
"`last_month_end_date`",
"`year_week_code`",
"`week_day_code`",
"`day_year_num`",
"`month_days`",
"`is_weekend`",
"`days_after1`",
"`days_after2`",
"`days_after3`",
"`days_after4`",
"`days_after5`",
"`days_after6`",
"`days_after7`"
],
"splitPk": "",
"connection": [
{
"table": [
"base_date"
],
"jdbcUrl": [
"jdbc:mysql://hadoop01:3306/dim"
]
}
]
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"defaultFS": "hdfs://hadoop01:8020",
"fileType": "orc",
"path": "/user/hive/warehouse/dim.db/test_dim_base_date_full",
"fileName": "base_date",
"writeMode": "truncate",
"fieldDelimiter": ",",
"column": [
{
"name": "trade_date",
"type": "string"
},
{
"name": "year_code",
"type": "int"
},
{
"name": "month_code",
"type": "int"
},
{
"name": "day_code",
"type": "int"
},
{
"name": "quanter_code",
"type": "int"
},
{
"name": "quanter_name",
"type": "string"
},
{
"name": "week_trade_date",
"type": "string"
},
{
"name": "month_trade_date",
"type": "string"
},
{
"name": "week_end_date",
"type": "string"
},
{
"name": "month_end_date",
"type": "string"
},
{
"name": "last_week_trade_date",
"type": "string"
},
{
"name": "last_month_trade_date",
"type": "string"
},
{
"name": "last_week_end_date",
"type": "string"
},
{
"name": "last_month_end_date",
"type": "string"
},
{
"name": "year_week_code",
"type": "int"
},
{
"name": "week_day_code",
"type": "int"
},
{
"name": "day_year_num",
"type": "int"
},
{
"name": "month_days",
"type": "int"
},
{
"name": "is_weekend",
"type": "int"
},
{
"name": "days_after1",
"type": "string"
},
{
"name": "days_after2",
"type": "string"
},
{
"name": "days_after3",
"type": "string"
},
{
"name": "days_after4",
"type": "string"
},
{
"name": "days_after5",
"type": "string"
},
{
"name": "days_after6",
"type": "string"
},
{
"name": "days_after7",
"type": "string"
}
]
}
}
}
]
}
}
执行
[root@hadoop01 job]# /usr/bin/python /export/server/datax/bin/datax.py /export/server/datax/job/01_mysql_2_hive_date_full.json
结果验证
将执行命令编写到shell脚本中
vim /export/server/datax/job/g.sh
#!/bin/bash
/usr/bin/python /export/server/datax/bin/datax.py /export/server/datax/job/g_mysql_2_hive_date_full.json
- chmod 777 /export/server/datax/job/g.sh
- /export/server/datax/job/g.sh
全量同步
每天新增一个日期分区,同步存储当天的全量数据
适用于保存周期型快照事实表
例子:全量同步----门店商品库存天表
将sqlserver中stock库里的dbo中的store_goods_stock_data_day表数据同步到hive中ods库中test_stock_store_goods_stock_data_day_i表中
建表语句:hive 创建分区表
CREATE TABLE IF NOT EXISTS ods.test_stock_store_goods_stock_data_day_i(
id INT COMMENT '主键',
store_no STRING COMMENT '店铺编码',
goods_no STRING COMMENT '商品NO',
is_saleable BIGINT COMMENT '是否可售:0否,1是',
stock_qty DECIMAL(27,3) COMMENT '库存数量',
stock_price DECIMAL(27,2) COMMENT '成本价',
stock_amount DECIMAL(27,2) COMMENT '库存金额',
last_update_time TIMESTAMP COMMENT '更新时间'
)
comment '门店商品库存天表'
partitioned by(dt STRING COMMENT '统计时间')
row format delimited fields terminated by ','
stored as orc
tblproperties ('orc.compress'='SNAPPY');
datax步骤
任务构建
查看路径
desc formatted ods.test_stock_store_goods_stock_data_day_i;
hdfs://hadoop01:8020
/user/hive/warehouse/ods.db/test_stock_store_goods_stock_data_day_i
编辑任务
结果验证
但是在hive中查不到数据是因为创建的外部看不到分区
解决方案
set hive.exec.dynamic.partition.mode=nonstrict; -- 先设置一下动态分区模式
MSCK REPAIR TABLE ods.test_stock_store_goods_stock_data_day_i --修复分区
然后就可以查到数据咯
也可以通过postsql将下列语句加到任务中
"postSql":[
"MSCK REPAIR TABLE ods.ods_stock_store_goods_stock_data_day_i"
],
仅增量同步
每天新增一个日期分区,同步并存储当天的新增数据
适用于事务型事实表,只会新增不会更新的数据,如退货订单表
例子:仅增量同步----门店销售支付表
首次执行,同步全量数据并且导入到多个对应分区
先将mysql中sale库里的store_sale_pay表数据导入到临时表中(hive里ods库的test_sale_store_sale_pay_i_temp表中)
然后通过insert overwrite插入到正式表中(test_sale_store_sale_pay_i)
建表语句:
hive创建分区表
CREATE TABLE IF NOT EXISTS ods.test_sale_store_sale_pay_i(
id BIGINT COMMENT '主键',
order_no STRING COMMENT '单据唯一编号',
order_id BIGINT COMMENT '单据唯一编号',
store_no STRING COMMENT '门店编码',
store_name STRING COMMENT '门店名称',
trade_date TIMESTAMP COMMENT '交易日期',
pay_date TIMESTAMP COMMENT '支付日期',
deal_date TIMESTAMP COMMENT '库存处理时间',
pos_no STRING COMMENT 'POS机编号',
ser_id BIGINT COMMENT '交易序号',
trade_id BIGINT COMMENT '销售类型:1-销售,2-退货,3-拒收,4-取消',
parent_order_sn STRING COMMENT '母单号,如果单据是子单有值',
source_order_sn STRING COMMENT '原始单据,退款的单据,则代表是原始销售单据',
source_type BIGINT COMMENT '销售渠道:1-门店POS,2-商城小程序,3-团购销售',
create_time STRING COMMENT '记录创建时间',
business_code STRING COMMENT '业务类型//预售、及时达、B2C',
pay_type_id STRING COMMENT '支付类别ID',
third_party_id STRING COMMENT '第三方支付类别ID',
third_party_name STRING COMMENT '第三方类别',
pay_amount DECIMAL(27, 2) COMMENT '支付金额',
third_trade_no STRING COMMENT '三方交易单号',
trade_no STRING COMMENT '交易单号',
source_trade_no STRING COMMENT '原始交易单号',
item BIGINT COMMENT '序号,同一种支付方式可能多个条记录',
ratio DECIMAL(27, 4) COMMENT '支付费率',
memo STRING COMMENT '备注'
)
comment '门店销售支付表'
partitioned by (dt STRING COMMENT '销售日期')
row format delimited fields terminated by ','
stored as orc
tblproperties ('orc.compress'='ZLIB');
hive临时表
CREATE TABLE IF NOT EXISTS ods.test_sale_store_sale_pay_i_temp(
id BIGINT COMMENT '主键',
order_no STRING COMMENT '单据唯一编号',
order_id BIGINT COMMENT '单据唯一编号',
store_no STRING COMMENT '门店编码',
store_name STRING COMMENT '门店名称',
trade_date TIMESTAMP COMMENT '交易日期',
pay_date TIMESTAMP COMMENT '支付日期',
deal_date TIMESTAMP COMMENT '库存处理时间',
pos_no STRING COMMENT 'POS机编号',
ser_id BIGINT COMMENT '交易序号',
trade_id BIGINT COMMENT '销售类型:1-销售,2-退货,3-拒收,4-取消',
parent_order_sn STRING COMMENT '母单号,如果单据是子单有值',
source_order_sn STRING COMMENT '原始单据,退款的单据,则代表是原始销售单据',
source_type BIGINT COMMENT '销售渠道:1-门店POS,2-商城小程序,3-团购销售',
create_time STRING COMMENT '记录创建时间',
business_code STRING COMMENT '业务类型//预售、及时达、B2C',
pay_type_id STRING COMMENT '支付类别ID',
third_party_id STRING COMMENT '第三方支付类别ID',
third_party_name STRING COMMENT '第三方类别',
pay_amount DECIMAL(27, 2) COMMENT '支付金额',
third_trade_no STRING COMMENT '三方交易单号',
trade_no STRING COMMENT '交易单号',
source_trade_no STRING COMMENT '原始交易单号',
item BIGINT COMMENT '序号,同一种支付方式可能多个条记录',
ratio DECIMAL(27, 4) COMMENT '支付费率',
memo STRING COMMENT '备注'
)
comment '门店销售支付临时表'
row format delimited fields terminated by ','
stored as orc
tblproperties ('orc.compress'='ZLIB');
构建任务
json文件记得修改为truncate
执行任务
数据从临时表导入到分区表
执行hivesql将全量数据从临时表导入到分区表。
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table ods.test_sale_store_sale_pay_i partition(dt)
select *,date_format(pay_date,'yyyy-MM-dd') as dt from ods.test_sale_store_sale_pay_i_temp t
;
查看数据
删除临时表 hive中
drop table ods.test_sale_store_sale_pay_i_temp
每天执行,同步前一天数据,放到前一天的分区
在mysql中插入数据
-- 模拟store_sale_pay 增量数据(上一天的数据)
insert into sale.store_sale_pay
select * from (
select null as id, order_no, order_id, store_no, store_name, trade_date,
concat(date_sub(current_date, interval 1 day), substr(pay_date, 11)) as pay_date, deal_date, pos_no, ser_id, trade_id, parent_order_sn,
source_order_sn, source_type, create_time, business_code, pay_type_id,
third_party_id, third_party_name, pay_amount, third_trade_no, trade_no, source_trade_no, item, ratio, memo
from sale.store_sale_pay
where id<3
) as t1
;
select * from sale.store_sale_pay
where date(pay_date)=date_sub(current_date, interval 1 day)
任务构建 在where中要加上条件
pay_date >= date_sub(curdate(),interval 1 day) and pay_date < curdate()
编辑任务
查看结果 前一天数据成功导入
新增及更新同步
每天新增一个日期分区,同步并存储当天的新增和更新数据
适用于既有新增又有更新的数据,最常见的就是累计型快照快照事实表,比如订单表
也适用于关心数据变化的维表,比如后续需要维护一个拉链表时,需要知道每天新增和更新的数据
例子:商城订单表
将mysql里sale库里的shop_order表数据导入到hive里ods库中的临时表中
创建表
CREATE TABLE IF NOT EXISTS ods.test_sale_shop_order_i(
id BIGINT COMMENT '编号',
parent_order_no STRING COMMENT '父单订单号',
order_id STRING COMMENT '订单编号',
is_split BIGINT COMMENT '是否拆单:0-不需要拆单;1-待拆单;2-已拆单',
platform_id BIGINT COMMENT '平台id:1-有赞,2-京东到家,3-美团外卖,4-饿了么',
tid STRING COMMENT '平台订单号',
source_type BIGINT COMMENT '订单来源:10,20,30,40,41,50,60,70',
source_name STRING COMMENT '订单来源名称:10-有赞,20-京东到家,30-美团外卖,40-饿了么,41-百度外卖,50-传智鲜精选,60-黑马优选,70-抖店',
store_no STRING COMMENT '门店编码',
city_id BIGINT COMMENT '城市编号',
city_name STRING COMMENT '城市名称',
region_code STRING COMMENT '区域编码',
order_status BIGINT,
order_status_desc STRING COMMENT '主订单状态描述:0-新建; 1-待出票;2-待备货;3-待揽件;4-待自提; 5-配送中;6-已完成;7-已取消',
pay_type BIGINT COMMENT '支付类型:1-线下支付;2-线上支付',
trade_type STRING COMMENT '交易类型。取值范围:fixed(一口价) gift(送礼)bulk_purchase(来自分销商的采购)present (赠品领取)group (拼团订单) pifa (批发订单) cod (货到付款) peer (代付) qrcode(扫码商家二维码直接支付的交易)qrcode_3rd(线下收银台二维码交易)',
is_deleted BIGINT COMMENT '是否有效,1:已删除,0:正常',
order_create_time TIMESTAMP COMMENT '平台订单创建时间',
order_pay_time TIMESTAMP COMMENT '订单支付时间',
create_time TIMESTAMP COMMENT '创建时间',
print_status BIGINT COMMENT '打印状态:0-未打票;1-已打票',
print_time TIMESTAMP COMMENT '出票时间',
stock_up_status BIGINT COMMENT '门店处理状态:0-待备货/1-已备货',
stock_up_time TIMESTAMP COMMENT '备货完成时间',
order_type BIGINT COMMENT '配送类型(真正的订单类型由业务类型来决定):1-及时送;2-隔日送;3-自提单',
express_type BIGINT COMMENT '配送方式:0-三方平台配送;1-自配送;2-快递;3-自提',
receive_time TIMESTAMP COMMENT '要求送达/自提时间',
express_code STRING COMMENT '配送单号',
delivery_status BIGINT COMMENT '配送状态:0-待配送;1-配送中;2-已送达',
delivery_time TIMESTAMP COMMENT '配送时间',
pick_up_status BIGINT COMMENT '自提状态:0-待自提;1-已自提',
qr_code STRING COMMENT 'qr提货码',
pick_up_time TIMESTAMP COMMENT '自提时间',
complete_time TIMESTAMP COMMENT '订单完结时间',
is_cancel BIGINT COMMENT '是否取消',
cancel_time TIMESTAMP COMMENT '取消时间',
cancel_reason STRING COMMENT '取消原因',
refund_status BIGINT COMMENT '退款状态:0未退款,1部分退款,2已全额退款',
refund_time TIMESTAMP COMMENT '已退款时间',
last_update_time TIMESTAMP COMMENT '最新更新时间',
order_total_amount DECIMAL(27, 2) COMMENT '订单总金额',
product_total_amount DECIMAL(27, 2) COMMENT '商品总金额(原价)',
pack_amount DECIMAL(27, 2) COMMENT '餐盒费/打包费',
delivery_amount DECIMAL(27, 2) COMMENT '配送费',
discount_amount DECIMAL(27, 2) COMMENT '订单优惠金额=商家承担优惠金额+平台补贴金额',
seller_discount_amount DECIMAL(27, 2) COMMENT '商家承担优惠金额',
platform_allowance_amount DECIMAL(27, 2) COMMENT '平台补贴金额',
real_paid_amount DECIMAL(27, 2) COMMENT '实付金额',
product_discount DECIMAL(27, 2) COMMENT '商品优惠金额',
real_product_amount DECIMAL(27, 2) COMMENT '商品实际金额',
buyer_id BIGINT COMMENT '买家id',
buyer_phone STRING COMMENT '买家电话',
buyer_remark STRING COMMENT '买家备注',
r_name STRING COMMENT '收货人姓名',
r_tel STRING COMMENT '收货人电话',
r_province STRING COMMENT '收货人省份',
r_city STRING COMMENT '收货人城市',
r_district STRING COMMENT '收货人区域',
r_address STRING COMMENT '收货人地址',
r_zipcode STRING COMMENT '收货人邮编',
is_tuan_head BIGINT COMMENT '是否为团长订单',
store_leader_id BIGINT COMMENT '团长id',
order_group_no STRING COMMENT '团单号',
commision_amount DECIMAL(27, 2) COMMENT '抽佣金额',
settle_amount DECIMAL(27, 2) COMMENT '结算金额',
points_amount DECIMAL(27, 2) COMMENT '积分抵扣金额',
pay_point BIGINT COMMENT '消费积分数',
balance_amount DECIMAL(27, 2) COMMENT '余额扣除金额',
pay_channel_amount DECIMAL(27, 2) COMMENT '通过支付渠道支付的金额',
point_amount DECIMAL(27, 2) COMMENT '消费赠送积分',
sync_erp_status BIGINT COMMENT '同步erp状态',
sync_erp_msg STRING COMMENT '同步erp失败消息'
)
COMMENT '商城订单表(更新表)'
partitioned by (dt STRING COMMENT '更新日期')
row format delimited fields terminated by ','
stored as orc
tblproperties ('orc.compress'='ZLIB');
CREATE TABLE IF NOT EXISTS ods.test_sale_shop_order_i_temp(
id BIGINT COMMENT '编号',
parent_order_no STRING COMMENT '父单订单号',
order_id STRING COMMENT '订单编号',
is_split BIGINT COMMENT '是否拆单:0-不需要拆单;1-待拆单;2-已拆单',
platform_id BIGINT COMMENT '平台id:1-有赞,2-京东到家,3-美团外卖,4-饿了么',
tid STRING COMMENT '平台订单号',
source_type BIGINT COMMENT '订单来源:10,20,30,40,41,50,60,70',
source_name STRING COMMENT '订单来源名称:10-有赞,20-京东到家,30-美团外卖,40-饿了么,41-百度外卖,50-传智鲜精选,60-黑马优选,70-抖店',
store_no STRING COMMENT '门店编码',
city_id BIGINT COMMENT '城市编号',
city_name STRING COMMENT '城市名称',
region_code STRING COMMENT '区域编码',
order_status BIGINT,
order_status_desc STRING COMMENT '主订单状态描述:0-新建; 1-待出票;2-待备货;3-待揽件;4-待自提; 5-配送中;6-已完成;7-已取消',
pay_type BIGINT COMMENT '支付类型:1-线下支付;2-线上支付',
trade_type STRING COMMENT '交易类型。取值范围:fixed(一口价) gift(送礼)bulk_purchase(来自分销商的采购)present (赠品领取)group (拼团订单) pifa (批发订单) cod (货到付款) peer (代付) qrcode(扫码商家二维码直接支付的交易)qrcode_3rd(线下收银台二维码交易)',
is_deleted BIGINT COMMENT '是否有效,1:已删除,0:正常',
order_create_time TIMESTAMP COMMENT '平台订单创建时间',
order_pay_time TIMESTAMP COMMENT '订单支付时间',
create_time TIMESTAMP COMMENT '创建时间',
print_status BIGINT COMMENT '打印状态:0-未打票;1-已打票',
print_time TIMESTAMP COMMENT '出票时间',
stock_up_status BIGINT COMMENT '门店处理状态:0-待备货/1-已备货',
stock_up_time TIMESTAMP COMMENT '备货完成时间',
order_type BIGINT COMMENT '配送类型(真正的订单类型由业务类型来决定):1-及时送;2-隔日送;3-自提单',
express_type BIGINT COMMENT '配送方式:0-三方平台配送;1-自配送;2-快递;3-自提',
receive_time TIMESTAMP COMMENT '要求送达/自提时间',
express_code STRING COMMENT '配送单号',
delivery_status BIGINT COMMENT '配送状态:0-待配送;1-配送中;2-已送达',
delivery_time TIMESTAMP COMMENT '配送时间',
pick_up_status BIGINT COMMENT '自提状态:0-待自提;1-已自提',
qr_code STRING COMMENT 'qr提货码',
pick_up_time TIMESTAMP COMMENT '自提时间',
complete_time TIMESTAMP COMMENT '订单完结时间',
is_cancel BIGINT COMMENT '是否取消',
cancel_time TIMESTAMP COMMENT '取消时间',
cancel_reason STRING COMMENT '取消原因',
refund_status BIGINT COMMENT '退款状态:0未退款,1部分退款,2已全额退款',
refund_time TIMESTAMP COMMENT '已退款时间',
last_update_time TIMESTAMP COMMENT '最新更新时间',
order_total_amount DECIMAL(27, 2) COMMENT '订单总金额',
product_total_amount DECIMAL(27, 2) COMMENT '商品总金额(原价)',
pack_amount DECIMAL(27, 2) COMMENT '餐盒费/打包费',
delivery_amount DECIMAL(27, 2) COMMENT '配送费',
discount_amount DECIMAL(27, 2) COMMENT '订单优惠金额=商家承担优惠金额+平台补贴金额',
seller_discount_amount DECIMAL(27, 2) COMMENT '商家承担优惠金额',
platform_allowance_amount DECIMAL(27, 2) COMMENT '平台补贴金额',
real_paid_amount DECIMAL(27, 2) COMMENT '实付金额',
product_discount DECIMAL(27, 2) COMMENT '商品优惠金额',
real_product_amount DECIMAL(27, 2) COMMENT '商品实际金额',
buyer_id BIGINT COMMENT '买家id',
buyer_phone STRING COMMENT '买家电话',
buyer_remark STRING COMMENT '买家备注',
r_name STRING COMMENT '收货人姓名',
r_tel STRING COMMENT '收货人电话',
r_province STRING COMMENT '收货人省份',
r_city STRING COMMENT '收货人城市',
r_district STRING COMMENT '收货人区域',
r_address STRING COMMENT '收货人地址',
r_zipcode STRING COMMENT '收货人邮编',
is_tuan_head BIGINT COMMENT '是否为团长订单',
store_leader_id BIGINT COMMENT '团长id',
order_group_no STRING COMMENT '团单号',
commision_amount DECIMAL(27, 2) COMMENT '抽佣金额',
settle_amount DECIMAL(27, 2) COMMENT '结算金额',
points_amount DECIMAL(27, 2) COMMENT '积分抵扣金额',
pay_point BIGINT COMMENT '消费积分数',
balance_amount DECIMAL(27, 2) COMMENT '余额扣除金额',
pay_channel_amount DECIMAL(27, 2) COMMENT '通过支付渠道支付的金额',
point_amount DECIMAL(27, 2) COMMENT '消费赠送积分',
sync_erp_status BIGINT COMMENT '同步erp状态',
sync_erp_msg STRING COMMENT '同步erp失败消息'
)
comment '商城订单临时表'
row format delimited fields terminated by ','
stored as orc
tblproperties ('orc.compress'='ZLIB');
任务构建
将临时表中的数据加载到正式表中 在hive中
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table ods.test_sale_shop_order_i partition(dt)
select *,date_format(t.create_time,'yyyy-MM-dd') as dt from ods.test_sale_shop_order_i_temp t
查看分区表
删除临时表
drop table ods.test_sale_shop_order_i_temp;
循环执行 任务构建
每次只同步前一天数据新增和变化的数据,所以构建reader时,where后加上条件
(create_time >= date_sub(curdate(),interval 1 day) and create_time < curdate())
or (last_update_time >= date_sub(curdate(),interval 1 day) and last_update_time < curdate())
查看结果 前一天数据已导入