当前位置: 首页 > news >正文

循环执行时数据的同步方式

在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, memofrom sale.store_sale_paywhere 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())

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看结果 前一天数据已导入

在这里插入图片描述

相关文章:

循环执行时数据的同步方式

在dataX-web中循环执行时数据的同步方式 解决中文comment中文乱码 在mysql中 # &#xff08;0&#xff09;修改库注释 alter table DBS modify column desc varchar(256) character set utf8; alter table DATABASE_PARAMS modify column PARAM_VALUE varchar(256) characte…...

Jvm G1与ZGC启动参数

G1GC G1GC 启动参数示例 -XX:UseG1GC -Xms4g -Xmx4g -XX:MaxGCPauseMillis200 -XX:InitiatingHeapOccupancyPercent45 -XX:G1HeapRegionSize16m -XX:ConcGCThreads2 -XX:ParallelGCThreads4 -XX:MetaspaceSize128m -XX:MaxMetaspaceSize512m -XX:ParallelRefProcEnabled -XX:…...

zdpgo_gin_zap 整合zdpgo_gin框架和zdpgo_zap框架的日志中间件,用于实现路由日志记录

zdpgo_gin_zap 整合zdpgo_gin框架和zdpgo_zap框架的日志中间件&#xff0c;用于实现路由日志记录 安装 go get github.com/zhangdapeng520/zdpgo_gin_zap使用教程 基本用法 package mainimport ("fmt""time"gin "github.com/zhangdapeng520/zdpg…...

FOC电流环

interrupt void ISRTimer0(void) { IQ_Ref2.2;//在电流环下给负电流电机反转 IQ_Fdbiq; IQ_ErrorIQ_Ref-IQ_Fdb; IQ_UpIQ_Kp*IQ_Error; IQ_UiIQ_Ui IQ_Ki*IQ_Up IQ_Kc*IQ_SatErr…...

工业设备数据采集方案的设计实施与应用-天拓四方

随着工业4.0时代的来临&#xff0c;工业设备数据采集成为了提升生产效率、优化能源管理、实现智能化决策的关键环节。本文将围绕工业设备数据采集的重要性、方案设计实施以及TDE工业网关的应用实践展开探讨&#xff0c;以期为相关企业提供一种清晰、专业且实操性强的数据采集方…...

【MySQL】索引——索引的实现、B+ vs B、聚簇索引 VS 非聚簇索引、索引操作、创建索引、查询索引、删除索引

文章目录 MySQL5. 索引的实现5.1 B vs B5.2 聚簇索引 VS 非聚簇索引 6. 索引操作6.1 创建主键索引6.2 创建唯一索引6.3 创建普通索引6.4 创建全文索引6.5 查询索引6.6 删除索引 MySQL 5. 索引的实现 因为MySQL和磁盘交互的基本单位为Page&#xff08;页&#xff09;。 MySQL 中…...

剖析HTML 元素——WEB开发系列02

HTML元素是构成HTML文档结构的基本单位&#xff0c;定义了页面上的不同部分和内容。HTML元素可以包含不同类型的内容&#xff0c;如文本、图片、链接、表格等&#xff0c;每种元素都有其特定的用途和语义。通过组合和嵌套不同的HTML元素&#xff0c;可以创建复杂的网页结构和布…...

影响3D打印零件品质的关键因素探析

随着科技的飞速发展&#xff0c;3D打印技术作为一种革命性的制造方式&#xff0c;正逐渐渗透到各个行业和领域。然而&#xff0c;尽管3D打印技术在设计和制造上带来了前所未有的灵活性和效率&#xff0c;但其零件品质却受到多种因素的复杂影响。本文将从设备性能、材料选择、工…...

Oracle事务是怎么练成的

什么是事务 事务是数据库管理系统执行过程的一个逻辑单位&#xff0c;由一系列有限的数据库操作序列构成&#xff0c;事务必须满足‌ACID属性。ACID理论是数据库中最重要的概念之一&#xff0c;分别代表原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consisten…...

线程与多线程(一)

线程与多线程&#xff08;一&#xff09; 一、线程1、概念2、示意图3、虚拟地址转换到物理地址4、与进程相比的优点5、与进程相比的缺点6、与进程的关系&#xff08;1&#xff09;线程独有&#xff08;2&#xff09;共享&#xff08;3&#xff09;示意图 二、POSIX线程库三、创…...

连接其他主机上的redis连接不上`telnet: Unable to connect to remote host: Connection refused`

telnet: Unable to connect to remote host: Connection refused 这个错误通常表示目标主机&#xff08;192.168.8.29&#xff09;上的服务&#xff08;6379端口&#xff09;没有运行&#xff0c;或者主机的防火墙/网络设置阻止了连接。 你可以尝试以下步骤来解决问题&#xf…...

dijkstral算法详解

import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map;public class test39 {// 定义节点类&#xff0c;表示图中的顶点public static class Node {public int value; // 节点的值&#xff0c;即编号public int in; // 进入…...

创意指南丨AR数学沉浸式空间体验

AR学习种类那么多&#xff0c;哪款最吸引你&#xff1f; 星河造梦坊和Unity联手打造的沉浸式空间AR无疑是其中的佼佼者。 这款应用不仅利用AR技术将抽象的数学概念变得生动有趣&#xff0c;还通过互动体验让学习者仿佛置身于一个充满奇幻色彩的数学世界中。 无论是学生还是教…...

linux文件——深度学习文件fd、文件系统调用

前言&#xff1a;从本片开始正式进入linux文件的学习&#xff0c;本片内容主要是文件的fd。 本篇内容博主将要先带友友回忆C语言中的文件操作接口&#xff0c;然后再过渡到操作系统中的系统调用的学习&#xff0c;最后理解操作系统中的文件操作。 ps&#xff1a;本节内容设计一…...

003集——C#数据类型 及大小端序转换——C#学习笔记

如需得到一个类型或一个变量在特定平台上的准确尺寸&#xff0c;可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。下面举例获取任何机器上 int 类型的存储尺寸&#xff1a; using System;namespace DataTypeApplication {class Program{…...

结构化输出及其使用方法

在 LLM 应用程序中构建稳健性和确定性 图片来自作者 欢迎来到雲闪世界。OpenAI最近宣布其最新的gpt-4o-2024–08–06模型支持结构化输出。与大型语言模型 (LLM) 相关的结构化输出并不是什么新鲜事——开发人员要么使用各种快速工程技术&#xff0c;要么使用第三方工具。 在本文…...

yolov8人脸识别案例

GitHub - wangWEI201901/YOLOv8-Detection-Project: &#x1f6e3;️基于YOLOv8的智慧校园人脸识别和公路汽车检测...

成员变量在Java中的定义与使用

成员变量在Java中的定义与使用 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在本文中&#xff0c;我们将详细探讨Java中的成员变量&#xff0c;包括其定义、使用以及各种类型的成员变量示例。 成员…...

Python开发工具PyCharm入门指南 - 用户界面主题更改

JetBrains PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 界面主题定义了窗口、对话框、按钮和用户界面的所有可视元素的外观…...

TCP网络套接字

一、创建套接字 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); 参数&#xff1a; domain&#xff1a;指定使用的协议族。常见的取值有AF_INET&#xff08;IPv4&#xff09;和AF_INET6&#xff08;IPv6&a…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...