• 数仓学习笔记(2)——业务数据采集


    目录

    一、电商业务简介

    1、电商系统表结构

    1.1 活动信息表(activity_info)

    1.2 活动规则表(activity_rule)

    1.3 活动商品关联表(activity_sku)

    1.4 平台属性表(base_attr_info)

    1.5 平台属性值表(base_attr_value)

    1.6 一级分类表(base_category1)

    1.7 二级分类表(base_category2)

    1.8 三级分类表(base_category3)

    1.9 字典表(base_dic)

    1.10 省份表(base_province)

    1.11 地区表(base_region)

    1.12 品牌表(base_trademark)

    1.13 购物车表(cart_info)

    1.14 评价表(comment_info)

    1.15 优惠券信息表(coupon_info)

    1.16 优惠券优惠范围表(coupon_range)

    1.17 优惠券领用表(coupon_use)

    1.18 收藏表(favor_info)

    1.19 订单明细表(order_detail)

    1.20 订单明细活动关联表(order_detail_activity)

    1.21 订单明细优惠券关联表(order_detail_coupon)

    1.22 订单表(order_info)

    1.23 退单表(order_refund_info)

    1.24 订单状态流水表(order_status_log)

    1.25 支付表(payment_info)

    1.26 退款表(refund_payment)

    1.27 SKU平台属性表(sku_attr_value)

    1.28 SKU信息表(sku_info)

    1.29 SKU销售属性表(sku_sale_attr_value)

    1.30 SPU信息表(spu_info)

    1.31 SPU销售属性表(spu_sale_attr)

    1.32 SPU销售属性值表(spu_sale_attr_value)

    1.33 用户地址表(user_address)

    1.34 用户信息表(user_info)

    2、Sqoop安装

    2.1 下载安装

    2.2 修改配置文件

    2.3 拷贝JDBC驱动

     2.5 测试Sqoop是否能够成功连接数据库

    2.6 Sqoop基本使用 

    3、数据同步策略

    3.1 全量同步策略

    3.2 增量同步策略

     3.3 新增及变化策略

    3.4 特殊策略

    4、业务数据导入HDFS

    4.1 分析同步策略

    4.2 业务数据首日同步脚本

    4.3 业务数据每日同步脚本


    一、电商业务简介

    1、电商系统表结构

            以下为本电商数仓系统涉及到的业务数据表结构关系。这34个表以订单表、用户表、SKU商品表、活动表和优惠券表为中心,延伸出了优惠券领用表、支付流水表、活动订单表、订单详情表、订单状态表、商品评论表、编码字典表退单表、SPU商品表等,用户表提供用户的详细信息,支付流水表提供该订单的支付详情,订单详情表提供订单的商品数量等情况,商品表给订单详情表提供商品的详细信息。本次讲解以此34个表为例,实际项目中,业务数据库中表格远远不止这些。

    1.1 活动信息表(activity_info)

    字段名

    字段说明

    id

    活动id

    activity_name

    活动名称

    activity_type

    活动类型(1:满减,2:折扣)

    activity_desc

    活动描述

    start_time

    开始时间

    end_time

    结束时间

    create_time

    创建时间

    1.2 活动规则表(activity_rule)

    id

    编号

    activity_id

    活动ID

    activity_type

    活动类型

    condition_amount

    满减金额

    condition_num

    满减件数

    benefit_amount

    优惠金额

    benefit_discount

    优惠折扣

    benefit_level

    优惠级别

    1.3 活动商品关联表(activity_sku)

    字段名

    字段说明

    id

    编号

    activity_id

    活动id

    sku_id

    sku_id

    create_time

    创建时间

    1.4 平台属性表(base_attr_info)

    字段名

    字段说明

    id

    编号

    attr_name

    属性名称

    category_id

    分类id

    category_level

    分类层级

    1.5 平台属性值表(base_attr_value)

    字段名

    字段说明

    id

    编号

    value_name

    属性值名称

    attr_id

    属性id

    1.6 一级分类表(base_category1)

    字段名

    字段说明

    id

    编号

    name

    分类名称

    1.7 二级分类表(base_category2)

    字段名

    字段说明

    id

    编号

    name

    二级分类名称

    category1_id

    一级分类编号

    1.8 三级分类表(base_category3)

    字段名

    字段说明

    id

    编号

    name

    三级分类名称

    category2_id

    二级分类编号

    1.9 字典表(base_dic)

    字段名

    字段说明

    dic_code

    编号

    dic_name

    编码名称

    parent_code

    父编号

    create_time

    创建日期

    operate_time

    修改日期

    1.10 省份表(base_province)

    字段名

    字段说明

    id

    id

    name

    省名称

    region_id

    大区id

    area_code

    行政区位码

    iso_code

    国际编码

    iso_3166_2

    ISO3166编码

    1.11 地区表(base_region)

    字段名

    字段说明

    id

    大区id

    region_name

    大区名称

    1.12 品牌表(base_trademark)

    字段名

    字段说明

    id

    编号

    tm_name

    属性值

    logo_url

    品牌logo的图片路径

    1.13 购物车表(cart_info)

    字段名

    字段说明

    id

    编号

    user_id

    用户id

    sku_id

    skuid

    cart_price

    放入购物车时价格

    sku_num

    数量

    img_url

    图片文件

    sku_name

    sku名称 (冗余)

    is_checked

    是否已经下单

    create_time

    创建时间

    operate_time

    修改时间

    is_ordered

    是否已经下单

    order_time

    下单时间

    source_type

    来源类型

    source_id

    来源编号

    1.14 评价表(comment_info)

    字段名

    字段说明

    id

    编号

    user_id

    用户id

    nick_name

    用户昵称

    head_img

    图片

    sku_id

    商品sku_id

    spu_id

    商品spu_id

    order_id

    订单编号

    appraise

    评价 1 好评 2 中评 3 差评

    comment_txt

    评价内容

    create_time

    创建时间

    operate_time

    修改时间

    1.15 优惠券信息表(coupon_info)

    字段名

    字段说明

    id

    购物券编号

    coupon_name

    购物券名称

    coupon_type

    购物券类型 1 现金券 2 折扣券 3 满减券 4 满件打折券

    condition_amount

    满额数(3

    condition_num

    满件数(4

    activity_id

    活动编号

    benefit_amount

    减金额(1 3

    benefit_discount

    折扣(2 4)

    create_time

    创建时间

    range_type

    范围类型 1、商品(spuid) 2、品类(三级分类id) 3、品牌

    limit_num

    最多领用次数

    taken_count

    已领用次数

    start_time

    可以领取的开始日期

    end_time

    可以领取的结束日期

    operate_time

    修改时间

    expire_time

    过期时间

    range_desc

    范围描述

    1.16 优惠券优惠范围表(coupon_range)

    字段名

    字段说明

    id

    购物券编号

    coupon_id

    优惠券id

    range_type

    范围类型 1、商品(spuid) 2、品类(三级分类id) 3、品牌

    range_id

    范围id

    1.17 优惠券领用表(coupon_use)

    字段名

    字段说明

    id

    编号

    coupon_id

    购物券ID

    user_id

    用户ID

    order_id

    订单ID

    coupon_status

    购物券状态(1:未使用 2:已使用)

    get_time

    获取时间

    using_time

    使用时间

    used_time

    支付时间

    expire_time

    过期时间

    1.18 收藏表(favor_info)

    字段名

    字段说明

    id

    编号

    user_id

    用户id

    sku_id

    skuid

    spu_id

    商品id

    is_cancel

    是否已取消 0 正常 1 已取消

    create_time

    创建时间

    cancel_time

    修改时间

    1.19 订单明细表(order_detail)

    字段名

    字段说明

    id

    编号

    order_id

    订单编号

    sku_id

    sku_id

    sku_name

    sku名称(冗余)

    img_url

    图片名称(冗余)

    order_price

    购买价格(下单时sku价格)

    sku_num

    购买个数

    create_time

    创建时间

    source_type

    来源类型

    source_id

    来源编号

    split_total_amount

    分摊总金额

    split_activity_amount

    分摊活动减免金额

    split_coupon_amount

    分摊优惠券减免金额

    1.20 订单明细活动关联表(order_detail_activity)

    字段名

    字段说明

    id

    编号

    order_id

    订单id

    order_detail_id

    订单明细id

    activity_id

    活动ID

    activity_rule_id

    活动规则

    sku_id

    skuID

    create_time

    获取时间

    1.21 订单明细优惠券关联表(order_detail_coupon)

    字段名

    字段说明

    id

    编号

    order_id

    订单id

    order_detail_id

    订单明细id

    coupon_id

    购物券ID

    coupon_use_id

    购物券领用id

    sku_id

    skuID

    create_time

    获取时间

    1.22 订单表(order_info)

    字段名

    字段说明

    id

    编号

    consignee

    收货人

    consignee_tel

    收件人电话

    total_amount

    总金额

    order_status

    订单状态

    user_id

    用户id

    payment_way

    付款方式

    delivery_address

    送货地址

    order_comment

    订单备注

    out_trade_no

    订单交易编号(第三方支付用)

    trade_body

    订单描述(第三方支付用)

    create_time

    创建时间

    operate_time

    操作时间

    expire_time

    失效时间

    process_status

    进度状态

    tracking_no

    物流单编号

    parent_order_id

    父订单编号

    img_url

    图片路径

    province_id

    地区

    activity_reduce_amount

    促销金额

    coupon_reduce_amount

    优惠金额

    original_total_amount

    原价金额

    feight_fee

    运费

    feight_fee_reduce

    运费减免

    refundable_time

    可退款日期(签收后30天)

    1.23 退单表(order_refund_info)

    字段名

    字段说明

    id

    编号

    user_id

    用户id

    order_id

    订单id

    sku_id

    skuid

    refund_type

    退款类型

    refund_num

    退货件数

    refund_amount

    退款金额

    refund_reason_type

    原因类型

    refund_reason_txt

    原因内容

    refund_status

    退款状态(0:待审批 1:已退款)

    create_time

    创建时间

    1.24 订单状态流水表(order_status_log)

    字段名

    字段说明

    id

    编号

    order_id

    订单编号

    order_status

    订单状态

    operate_time

    操作时间

    1.25 支付表(payment_info)

    字段名

    字段说明

    id

    编号

    out_trade_no

    对外业务编号

    order_id

    订单编号

    user_id

    payment_type

    支付类型(微信 支付宝)

    trade_no

    交易编号

    total_amount

    支付金额

    subject

    交易内容

    payment_status

    支付状态

    create_time

    创建时间

    callback_time

    回调时间

    callback_content

    回调信息

    1.26 退款表(refund_payment)

    字段名

    字段说明

    id

    编号

    out_trade_no

    对外业务编号

    order_id

    订单编号

    sku_id

    商品sku_id

    payment_type

    支付类型(微信 支付宝)

    trade_no

    交易编号

    total_amount

    退款金额

    subject

    交易内容

    refund_status

    退款状态

    create_time

    创建时间

    callback_time

    回调时间

    callback_content

    回调信息

    1.27 SKU平台属性表(sku_attr_value)

    字段名

    字段说明

    id

    编号

    attr_id

    属性id(冗余)

    value_id

    属性值id

    sku_id

    skuid

    attr_name

    属性名称

    value_name

    属性值名称

    1.28 SKU信息表(sku_info)

    字段名

    字段说明

    id

    库存id(itemID)

    spu_id

    商品id

    price

    价格

    sku_name

    sku名称

    sku_desc

    商品规格描述

    weight

    重量

    tm_id

    品牌(冗余)

    category3_id

    三级分类id(冗余)

    sku_default_img

    默认显示图片(冗余)

    is_sale

    是否销售(1:是 0:否)

    create_time

    创建时间

    1.29 SKU销售属性表(sku_sale_attr_value)

    字段名

    字段说明

    id

    id

    sku_id

    库存单元id

    spu_id

    spu_id(冗余)

    sale_attr_value_id

    销售属性值id

    sale_attr_id

    销售属性id

    sale_attr_name

    销售属性值名称

    sale_attr_value_name

    销售属性值名称

    1.30 SPU信息表(spu_info)

    字段名

    字段说明

    id

    商品id

    spu_name

    商品名称

    description

    商品描述(后台简述)

    category3_id

    三级分类id

    tm_id

    品牌id

    1.31 SPU销售属性表(spu_sale_attr)

    字段名

    字段说明

    id

    编号(业务中无关联)

    spu_id

    商品id

    base_sale_attr_id

    销售属性id

    sale_attr_name

    销售属性名称(冗余)

    1.32 SPU销售属性值表(spu_sale_attr_value)

    字段名

    字段说明

    id

    销售属性值编号

    spu_id

    商品id

    base_sale_attr_id

    销售属性id

    sale_attr_value_name

    销售属性值名称

    sale_attr_name

    销售属性名称(冗余)

    1.33 用户地址表(user_address)

    字段名

    字段说明

    id

    编号

    user_id

    用户id

    province_id

    省份id

    user_address

    用户地址

    consignee

    收件人

    phone_num

    联系方式

    is_default

    是否是默认

    1.34 用户信息表(user_info)

    字段名

    字段说明

    id

    编号

    login_name

    用户名称

    nick_name

    用户昵称

    passwd

    用户密码

    name

    用户姓名

    phone_num

    手机号

    email

    邮箱

    head_img

    头像

    user_level

    用户级别

    birthday

    用户生日

    gender

    性别 M,F

    create_time

    创建时间

    operate_time

    修改时间

    status

    状态

    2、Sqoop安装

    2.1 下载安装

    2.2 修改配置文件

    2.3 拷贝JDBC驱动

     2.5 测试Sqoop是否能够成功连接数据库

    2.6 Sqoop基本使用 

     \ 是换行符,前面必须要有一个空格,因为在执行命令的时候,换行符会被自动删去,并将两行代码接在一起,因此必须要有个空格隔开。

    如果使用query这个语句就得需要加上最后的$CONDITIONS$

    3、数据同步策略

    3.1 全量同步策略

    3.2 增量同步策略

     3.3 新增及变化策略

    3.4 特殊策略

    某些特殊的表,可不必遵循上述同步策略。例如某些不会发生变化的表(地区表,省份表,民族表)可以只存一份固定值。

    4、业务数据导入HDFS

    4.1 分析同步策略

    4.2 业务数据首日同步脚本

    1. #! /bin/bash
    2. APP=gmall
    3. sqoop=/opt/module/sqoop/bin/sqoop
    4. if [ -n "$2" ] ;then
    5. do_date=$2
    6. else
    7. echo "请传入日期参数"
    8. exit
    9. fi
    10. import_data(){
    11. $sqoop import \
    12. --connect jdbc:mysql://hadoop102:3306/$APP \
    13. --username root \
    14. --password 000000 \
    15. --target-dir /origin_data/$APP/db/$1/$do_date \
    16. --delete-target-dir \
    17. --query "$2 where \$CONDITIONS" \
    18. --num-mappers 1 \
    19. --fields-terminated-by '\t' \
    20. --compress \
    21. --compression-codec lzop \
    22. --null-string '\\N' \
    23. --null-non-string '\\N'
    24. hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /origin_data/$APP/db/$1/$do_date
    25. }
    26. import_order_info(){
    27. import_data order_info "select
    28. id,
    29. total_amount,
    30. order_status,
    31. user_id,
    32. payment_way,
    33. delivery_address,
    34. out_trade_no,
    35. create_time,
    36. operate_time,
    37. expire_time,
    38. tracking_no,
    39. province_id,
    40. activity_reduce_amount,
    41. coupon_reduce_amount,
    42. original_total_amount,
    43. feight_fee,
    44. feight_fee_reduce
    45. from order_info"
    46. }
    47. import_coupon_use(){
    48. import_data coupon_use "select
    49. id,
    50. coupon_id,
    51. user_id,
    52. order_id,
    53. coupon_status,
    54. get_time,
    55. using_time,
    56. used_time,
    57. expire_time
    58. from coupon_use"
    59. }
    60. import_order_status_log(){
    61. import_data order_status_log "select
    62. id,
    63. order_id,
    64. order_status,
    65. operate_time
    66. from order_status_log"
    67. }
    68. import_user_info(){
    69. import_data "user_info" "select
    70. id,
    71. login_name,
    72. nick_name,
    73. name,
    74. phone_num,
    75. email,
    76. user_level,
    77. birthday,
    78. gender,
    79. create_time,
    80. operate_time
    81. from user_info"
    82. }
    83. import_order_detail(){
    84. import_data order_detail "select
    85. id,
    86. order_id,
    87. sku_id,
    88. sku_name,
    89. order_price,
    90. sku_num,
    91. create_time,
    92. source_type,
    93. source_id,
    94. split_total_amount,
    95. split_activity_amount,
    96. split_coupon_amount
    97. from order_detail"
    98. }
    99. import_payment_info(){
    100. import_data "payment_info" "select
    101. id,
    102. out_trade_no,
    103. order_id,
    104. user_id,
    105. payment_type,
    106. trade_no,
    107. total_amount,
    108. subject,
    109. payment_status,
    110. create_time,
    111. callback_time
    112. from payment_info"
    113. }
    114. import_comment_info(){
    115. import_data comment_info "select
    116. id,
    117. user_id,
    118. sku_id,
    119. spu_id,
    120. order_id,
    121. appraise,
    122. create_time
    123. from comment_info"
    124. }
    125. import_order_refund_info(){
    126. import_data order_refund_info "select
    127. id,
    128. user_id,
    129. order_id,
    130. sku_id,
    131. refund_type,
    132. refund_num,
    133. refund_amount,
    134. refund_reason_type,
    135. refund_status,
    136. create_time
    137. from order_refund_info"
    138. }
    139. import_sku_info(){
    140. import_data sku_info "select
    141. id,
    142. spu_id,
    143. price,
    144. sku_name,
    145. sku_desc,
    146. weight,
    147. tm_id,
    148. category3_id,
    149. is_sale,
    150. create_time
    151. from sku_info"
    152. }
    153. import_base_category1(){
    154. import_data "base_category1" "select
    155. id,
    156. name
    157. from base_category1"
    158. }
    159. import_base_category2(){
    160. import_data "base_category2" "select
    161. id,
    162. name,
    163. category1_id
    164. from base_category2"
    165. }
    166. import_base_category3(){
    167. import_data "base_category3" "select
    168. id,
    169. name,
    170. category2_id
    171. from base_category3"
    172. }
    173. import_base_province(){
    174. import_data base_province "select
    175. id,
    176. name,
    177. region_id,
    178. area_code,
    179. iso_code,
    180. iso_3166_2
    181. from base_province"
    182. }
    183. import_base_region(){
    184. import_data base_region "select
    185. id,
    186. region_name
    187. from base_region"
    188. }
    189. import_base_trademark(){
    190. import_data base_trademark "select
    191. id,
    192. tm_name
    193. from base_trademark"
    194. }
    195. import_spu_info(){
    196. import_data spu_info "select
    197. id,
    198. spu_name,
    199. category3_id,
    200. tm_id
    201. from spu_info"
    202. }
    203. import_favor_info(){
    204. import_data favor_info "select
    205. id,
    206. user_id,
    207. sku_id,
    208. spu_id,
    209. is_cancel,
    210. create_time,
    211. cancel_time
    212. from favor_info"
    213. }
    214. import_cart_info(){
    215. import_data cart_info "select
    216. id,
    217. user_id,
    218. sku_id,
    219. cart_price,
    220. sku_num,
    221. sku_name,
    222. create_time,
    223. operate_time,
    224. is_ordered,
    225. order_time,
    226. source_type,
    227. source_id
    228. from cart_info"
    229. }
    230. import_coupon_info(){
    231. import_data coupon_info "select
    232. id,
    233. coupon_name,
    234. coupon_type,
    235. condition_amount,
    236. condition_num,
    237. activity_id,
    238. benefit_amount,
    239. benefit_discount,
    240. create_time,
    241. range_type,
    242. limit_num,
    243. taken_count,
    244. start_time,
    245. end_time,
    246. operate_time,
    247. expire_time
    248. from coupon_info"
    249. }
    250. import_activity_info(){
    251. import_data activity_info "select
    252. id,
    253. activity_name,
    254. activity_type,
    255. start_time,
    256. end_time,
    257. create_time
    258. from activity_info"
    259. }
    260. import_activity_rule(){
    261. import_data activity_rule "select
    262. id,
    263. activity_id,
    264. activity_type,
    265. condition_amount,
    266. condition_num,
    267. benefit_amount,
    268. benefit_discount,
    269. benefit_level
    270. from activity_rule"
    271. }
    272. import_base_dic(){
    273. import_data base_dic "select
    274. dic_code,
    275. dic_name,
    276. parent_code,
    277. create_time,
    278. operate_time
    279. from base_dic"
    280. }
    281. import_order_detail_activity(){
    282. import_data order_detail_activity "select
    283. id,
    284. order_id,
    285. order_detail_id,
    286. activity_id,
    287. activity_rule_id,
    288. sku_id,
    289. create_time
    290. from order_detail_activity"
    291. }
    292. import_order_detail_coupon(){
    293. import_data order_detail_coupon "select
    294. id,
    295. order_id,
    296. order_detail_id,
    297. coupon_id,
    298. coupon_use_id,
    299. sku_id,
    300. create_time
    301. from order_detail_coupon"
    302. }
    303. import_refund_payment(){
    304. import_data refund_payment "select
    305. id,
    306. out_trade_no,
    307. order_id,
    308. sku_id,
    309. payment_type,
    310. trade_no,
    311. total_amount,
    312. subject,
    313. refund_status,
    314. create_time,
    315. callback_time
    316. from refund_payment"
    317. }
    318. import_sku_attr_value(){
    319. import_data sku_attr_value "select
    320. id,
    321. attr_id,
    322. value_id,
    323. sku_id,
    324. attr_name,
    325. value_name
    326. from sku_attr_value"
    327. }
    328. import_sku_sale_attr_value(){
    329. import_data sku_sale_attr_value "select
    330. id,
    331. sku_id,
    332. spu_id,
    333. sale_attr_value_id,
    334. sale_attr_id,
    335. sale_attr_name,
    336. sale_attr_value_name
    337. from sku_sale_attr_value"
    338. }
    339. case $1 in
    340. "order_info")
    341. import_order_info
    342. ;;
    343. "base_category1")
    344. import_base_category1
    345. ;;
    346. "base_category2")
    347. import_base_category2
    348. ;;
    349. "base_category3")
    350. import_base_category3
    351. ;;
    352. "order_detail")
    353. import_order_detail
    354. ;;
    355. "sku_info")
    356. import_sku_info
    357. ;;
    358. "user_info")
    359. import_user_info
    360. ;;
    361. "payment_info")
    362. import_payment_info
    363. ;;
    364. "base_province")
    365. import_base_province
    366. ;;
    367. "base_region")
    368. import_base_region
    369. ;;
    370. "base_trademark")
    371. import_base_trademark
    372. ;;
    373. "activity_info")
    374. import_activity_info
    375. ;;
    376. "cart_info")
    377. import_cart_info
    378. ;;
    379. "comment_info")
    380. import_comment_info
    381. ;;
    382. "coupon_info")
    383. import_coupon_info
    384. ;;
    385. "coupon_use")
    386. import_coupon_use
    387. ;;
    388. "favor_info")
    389. import_favor_info
    390. ;;
    391. "order_refund_info")
    392. import_order_refund_info
    393. ;;
    394. "order_status_log")
    395. import_order_status_log
    396. ;;
    397. "spu_info")
    398. import_spu_info
    399. ;;
    400. "activity_rule")
    401. import_activity_rule
    402. ;;
    403. "base_dic")
    404. import_base_dic
    405. ;;
    406. "order_detail_activity")
    407. import_order_detail_activity
    408. ;;
    409. "order_detail_coupon")
    410. import_order_detail_coupon
    411. ;;
    412. "refund_payment")
    413. import_refund_payment
    414. ;;
    415. "sku_attr_value")
    416. import_sku_attr_value
    417. ;;
    418. "sku_sale_attr_value")
    419. import_sku_sale_attr_value
    420. ;;
    421. "all")
    422. import_base_category1
    423. import_base_category2
    424. import_base_category3
    425. import_order_info
    426. import_order_detail
    427. import_sku_info
    428. import_user_info
    429. import_payment_info
    430. import_base_region
    431. import_base_province
    432. import_base_trademark
    433. import_activity_info
    434. import_cart_info
    435. import_comment_info
    436. import_coupon_use
    437. import_coupon_info
    438. import_favor_info
    439. import_order_refund_info
    440. import_order_status_log
    441. import_spu_info
    442. import_activity_rule
    443. import_base_dic
    444. import_order_detail_activity
    445. import_order_detail_coupon
    446. import_refund_payment
    447. import_sku_attr_value
    448. import_sku_sale_attr_value
    449. ;;
    450. esac

    4.3 业务数据每日同步脚本

    1. #! /bin/bash
    2. APP=gmall
    3. sqoop=/opt/module/sqoop/bin/sqoop
    4. if [ -n "$2" ] ;then
    5. do_date=$2
    6. else
    7. do_date=`date -d '-1 day' +%F`
    8. fi
    9. import_data(){
    10. $sqoop import \
    11. --connect jdbc:mysql://hadoop102:3306/$APP \
    12. --username root \
    13. --password 000000 \
    14. --target-dir /origin_data/$APP/db/$1/$do_date \
    15. --delete-target-dir \
    16. --query "$2 and \$CONDITIONS" \
    17. --num-mappers 1 \
    18. --fields-terminated-by '\t' \
    19. --compress \
    20. --compression-codec lzop \
    21. --null-string '\\N' \
    22. --null-non-string '\\N'
    23. hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /origin_data/$APP/db/$1/$do_date
    24. }
    25. import_order_info(){
    26. import_data order_info "select
    27. id,
    28. total_amount,
    29. order_status,
    30. user_id,
    31. payment_way,
    32. delivery_address,
    33. out_trade_no,
    34. create_time,
    35. operate_time,
    36. expire_time,
    37. tracking_no,
    38. province_id,
    39. activity_reduce_amount,
    40. coupon_reduce_amount,
    41. original_total_amount,
    42. feight_fee,
    43. feight_fee_reduce
    44. from order_info
    45. where (date_format(create_time,'%Y-%m-%d')='$do_date'
    46. or date_format(operate_time,'%Y-%m-%d')='$do_date')"
    47. }
    48. import_coupon_use(){
    49. import_data coupon_use "select
    50. id,
    51. coupon_id,
    52. user_id,
    53. order_id,
    54. coupon_status,
    55. get_time,
    56. using_time,
    57. used_time,
    58. expire_time
    59. from coupon_use
    60. where (date_format(get_time,'%Y-%m-%d')='$do_date'
    61. or date_format(using_time,'%Y-%m-%d')='$do_date'
    62. or date_format(used_time,'%Y-%m-%d')='$do_date'
    63. or date_format(expire_time,'%Y-%m-%d')='$do_date')"
    64. }
    65. import_order_status_log(){
    66. import_data order_status_log "select
    67. id,
    68. order_id,
    69. order_status,
    70. operate_time
    71. from order_status_log
    72. where date_format(operate_time,'%Y-%m-%d')='$do_date'"
    73. }
    74. import_user_info(){
    75. import_data "user_info" "select
    76. id,
    77. login_name,
    78. nick_name,
    79. name,
    80. phone_num,
    81. email,
    82. user_level,
    83. birthday,
    84. gender,
    85. create_time,
    86. operate_time
    87. from user_info
    88. where (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date'
    89. or DATE_FORMAT(operate_time,'%Y-%m-%d')='$do_date')"
    90. }
    91. import_order_detail(){
    92. import_data order_detail "select
    93. id,
    94. order_id,
    95. sku_id,
    96. sku_name,
    97. order_price,
    98. sku_num,
    99. create_time,
    100. source_type,
    101. source_id,
    102. split_total_amount,
    103. split_activity_amount,
    104. split_coupon_amount
    105. from order_detail
    106. where DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date'"
    107. }
    108. import_payment_info(){
    109. import_data "payment_info" "select
    110. id,
    111. out_trade_no,
    112. order_id,
    113. user_id,
    114. payment_type,
    115. trade_no,
    116. total_amount,
    117. subject,
    118. payment_status,
    119. create_time,
    120. callback_time
    121. from payment_info
    122. where (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date'
    123. or DATE_FORMAT(callback_time,'%Y-%m-%d')='$do_date')"
    124. }
    125. import_comment_info(){
    126. import_data comment_info "select
    127. id,
    128. user_id,
    129. sku_id,
    130. spu_id,
    131. order_id,
    132. appraise,
    133. create_time
    134. from comment_info
    135. where date_format(create_time,'%Y-%m-%d')='$do_date'"
    136. }
    137. import_order_refund_info(){
    138. import_data order_refund_info "select
    139. id,
    140. user_id,
    141. order_id,
    142. sku_id,
    143. refund_type,
    144. refund_num,
    145. refund_amount,
    146. refund_reason_type,
    147. refund_status,
    148. create_time
    149. from order_refund_info
    150. where date_format(create_time,'%Y-%m-%d')='$do_date'"
    151. }
    152. import_sku_info(){
    153. import_data sku_info "select
    154. id,
    155. spu_id,
    156. price,
    157. sku_name,
    158. sku_desc,
    159. weight,
    160. tm_id,
    161. category3_id,
    162. is_sale,
    163. create_time
    164. from sku_info where 1=1"
    165. }
    166. import_base_category1(){
    167. import_data "base_category1" "select
    168. id,
    169. name
    170. from base_category1 where 1=1"
    171. }
    172. import_base_category2(){
    173. import_data "base_category2" "select
    174. id,
    175. name,
    176. category1_id
    177. from base_category2 where 1=1"
    178. }
    179. import_base_category3(){
    180. import_data "base_category3" "select
    181. id,
    182. name,
    183. category2_id
    184. from base_category3 where 1=1"
    185. }
    186. import_base_province(){
    187. import_data base_province "select
    188. id,
    189. name,
    190. region_id,
    191. area_code,
    192. iso_code,
    193. iso_3166_2
    194. from base_province
    195. where 1=1"
    196. }
    197. import_base_region(){
    198. import_data base_region "select
    199. id,
    200. region_name
    201. from base_region
    202. where 1=1"
    203. }
    204. import_base_trademark(){
    205. import_data base_trademark "select
    206. id,
    207. tm_name
    208. from base_trademark
    209. where 1=1"
    210. }
    211. import_spu_info(){
    212. import_data spu_info "select
    213. id,
    214. spu_name,
    215. category3_id,
    216. tm_id
    217. from spu_info
    218. where 1=1"
    219. }
    220. import_favor_info(){
    221. import_data favor_info "select
    222. id,
    223. user_id,
    224. sku_id,
    225. spu_id,
    226. is_cancel,
    227. create_time,
    228. cancel_time
    229. from favor_info
    230. where 1=1"
    231. }
    232. import_cart_info(){
    233. import_data cart_info "select
    234. id,
    235. user_id,
    236. sku_id,
    237. cart_price,
    238. sku_num,
    239. sku_name,
    240. create_time,
    241. operate_time,
    242. is_ordered,
    243. order_time,
    244. source_type,
    245. source_id
    246. from cart_info
    247. where 1=1"
    248. }
    249. import_coupon_info(){
    250. import_data coupon_info "select
    251. id,
    252. coupon_name,
    253. coupon_type,
    254. condition_amount,
    255. condition_num,
    256. activity_id,
    257. benefit_amount,
    258. benefit_discount,
    259. create_time,
    260. range_type,
    261. limit_num,
    262. taken_count,
    263. start_time,
    264. end_time,
    265. operate_time,
    266. expire_time
    267. from coupon_info
    268. where 1=1"
    269. }
    270. import_activity_info(){
    271. import_data activity_info "select
    272. id,
    273. activity_name,
    274. activity_type,
    275. start_time,
    276. end_time,
    277. create_time
    278. from activity_info
    279. where 1=1"
    280. }
    281. import_activity_rule(){
    282. import_data activity_rule "select
    283. id,
    284. activity_id,
    285. activity_type,
    286. condition_amount,
    287. condition_num,
    288. benefit_amount,
    289. benefit_discount,
    290. benefit_level
    291. from activity_rule
    292. where 1=1"
    293. }
    294. import_base_dic(){
    295. import_data base_dic "select
    296. dic_code,
    297. dic_name,
    298. parent_code,
    299. create_time,
    300. operate_time
    301. from base_dic
    302. where 1=1"
    303. }
    304. import_order_detail_activity(){
    305. import_data order_detail_activity "select
    306. id,
    307. order_id,
    308. order_detail_id,
    309. activity_id,
    310. activity_rule_id,
    311. sku_id,
    312. create_time
    313. from order_detail_activity
    314. where date_format(create_time,'%Y-%m-%d')='$do_date'"
    315. }
    316. import_order_detail_coupon(){
    317. import_data order_detail_coupon "select
    318. id,
    319. order_id,
    320. order_detail_id,
    321. coupon_id,
    322. coupon_use_id,
    323. sku_id,
    324. create_time
    325. from order_detail_coupon
    326. where date_format(create_time,'%Y-%m-%d')='$do_date'"
    327. }
    328. import_refund_payment(){
    329. import_data refund_payment "select
    330. id,
    331. out_trade_no,
    332. order_id,
    333. sku_id,
    334. payment_type,
    335. trade_no,
    336. total_amount,
    337. subject,
    338. refund_status,
    339. create_time,
    340. callback_time
    341. from refund_payment
    342. where (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date'
    343. or DATE_FORMAT(callback_time,'%Y-%m-%d')='$do_date')"
    344. }
    345. import_sku_attr_value(){
    346. import_data sku_attr_value "select
    347. id,
    348. attr_id,
    349. value_id,
    350. sku_id,
    351. attr_name,
    352. value_name
    353. from sku_attr_value
    354. where 1=1"
    355. }
    356. import_sku_sale_attr_value(){
    357. import_data sku_sale_attr_value "select
    358. id,
    359. sku_id,
    360. spu_id,
    361. sale_attr_value_id,
    362. sale_attr_id,
    363. sale_attr_name,
    364. sale_attr_value_name
    365. from sku_sale_attr_value
    366. where 1=1"
    367. }
    368. case $1 in
    369. "order_info")
    370. import_order_info
    371. ;;
    372. "base_category1")
    373. import_base_category1
    374. ;;
    375. "base_category2")
    376. import_base_category2
    377. ;;
    378. "base_category3")
    379. import_base_category3
    380. ;;
    381. "order_detail")
    382. import_order_detail
    383. ;;
    384. "sku_info")
    385. import_sku_info
    386. ;;
    387. "user_info")
    388. import_user_info
    389. ;;
    390. "payment_info")
    391. import_payment_info
    392. ;;
    393. "base_province")
    394. import_base_province
    395. ;;
    396. "activity_info")
    397. import_activity_info
    398. ;;
    399. "cart_info")
    400. import_cart_info
    401. ;;
    402. "comment_info")
    403. import_comment_info
    404. ;;
    405. "coupon_info")
    406. import_coupon_info
    407. ;;
    408. "coupon_use")
    409. import_coupon_use
    410. ;;
    411. "favor_info")
    412. import_favor_info
    413. ;;
    414. "order_refund_info")
    415. import_order_refund_info
    416. ;;
    417. "order_status_log")
    418. import_order_status_log
    419. ;;
    420. "spu_info")
    421. import_spu_info
    422. ;;
    423. "activity_rule")
    424. import_activity_rule
    425. ;;
    426. "base_dic")
    427. import_base_dic
    428. ;;
    429. "order_detail_activity")
    430. import_order_detail_activity
    431. ;;
    432. "order_detail_coupon")
    433. import_order_detail_coupon
    434. ;;
    435. "refund_payment")
    436. import_refund_payment
    437. ;;
    438. "sku_attr_value")
    439. import_sku_attr_value
    440. ;;
    441. "sku_sale_attr_value")
    442. import_sku_sale_attr_value
    443. ;;
    444. "all")
    445. import_base_category1
    446. import_base_category2
    447. import_base_category3
    448. import_order_info
    449. import_order_detail
    450. import_sku_info
    451. import_user_info
    452. import_payment_info
    453. import_base_trademark
    454. import_activity_info
    455. import_cart_info
    456. import_comment_info
    457. import_coupon_use
    458. import_coupon_info
    459. import_favor_info
    460. import_order_refund_info
    461. import_order_status_log
    462. import_spu_info
    463. import_activity_rule
    464. import_base_dic
    465. import_order_detail_activity
    466. import_order_detail_coupon
    467. import_refund_payment
    468. import_sku_attr_value
    469. import_sku_sale_attr_value
    470. ;;
    471. esac

  • 相关阅读:
    【Web】ES6新特性
    数据结构之算法
    学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难
    如何在本地安装多个nodejs版本,方便前端开发
    Vue3聊天气泡简单实现思路
    健康舒适的超满意照明体验!SUKER书客SKY护眼台灯测评
    Opencv-图像插值与LUT查找表
    Websocket在Java中的实践——自动注册端点
    mycat实现分库分表小例子
    从0搭建夜莺v6基础监控告警系统(三):告警对接企业微信
  • 原文地址:https://blog.csdn.net/qq_64557330/article/details/126474323