大数据-242 离线数仓 - 电商焦点交易 数据导入 全量数据导入方案 产物分类 ...

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

点一下关注吧!!!非常感谢!!持续更新!!!

Java篇开始了!

现在开始更新 MyBatis,一起深入浅出!
现在已经更新到了:



  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据发掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(正在更新…)
章节内容

上节我们完成了如下的内容:


  • 电商焦点交易 业务数据表结构
  • 订单、产物、分类、店肆、付出表

数据导入


已经确定的事变:DataX、导出7张表的数据。
MySQL导出:全量导出、增量导出(导出前一天的数据)
业务数据生存在MySQL中,逐日凌晨上一天的表数据:


  • 表数据量少,采用全量方式导出MySQL
  • 表数据量多,而且根据字段能区分出天天新增数据,采用增量的方式导出MySQL

3张增量表:


  • 订单表 wzk_trade_orders
  • 订单产物表 wzk_order_produce
  • 产物信息表 wzk_product_info
4张全量表:


  • 产物分量表 wzk_product_category
  • 商家店肆表 wzk_shops
  • 商家地区构造表 wzk_shop_admin_org
  • 付出方式表 wzk_payment
数据库导入

上述的内容中,可以先把表构建出来,然后天生一批数据,用于测试,我这里就导入天生好的数据了。

业务需求

电商体系业务中最关键的业务,电商的运营活动都是围绕这个主题睁开。
选取的指标包括:订单数、商品数、付出金额,对这些指标按贩卖区域、商品范例分析。
在大数据的分析中,"电商焦点交易"是指电商平台上全部与商品交易相关的焦点活动和交易数据的聚集。详细来说,焦点交易涵盖了商品的浏览、加购物车、下单、付出、发货、收货等一系枚活动,它们直接影响电商平台的运营效率、用户体验和商业代价。
需求板块

电商平台的焦点交易可以分为以下几个重要环节,每个环节都涉及大量数据的收集、存储和分析:


  • 商品浏览:用户浏览商品的活动数据,比方用户查看了哪些商品、查看时长、是否点击了相关广告或推荐商品等。这些数据可以或许帮助平台了解用户的兴趣点,进而优化商品推荐和个性化营销策略。
  • 加入购物车:用户将商品添加到购物车中的活动。通过分析购物车中的商品,可以获取用户的购买意图和倾向,帮助商家调整商品定价、库存和促销策略。
  • 下单:用户在电商平台上完成的订单天生活动。包括订单的创建、订单内容、用户的收货地址、选择的付出方式等数据。订单数据是电商交易中的焦点,通常涉及大量的数据信息,要求体系可以或许高效地处理和存储。
  • 付出:付出是交易中至关重要的环节,付出数据可以通过付出方式、付出乐成与否、付出金额、付出时间等维度举行分析。这部门数据可以帮助平台评估差别付出方式的受接待水平,并举行相应的优化。
  • 发货:商品发货数据记载了商家发货的时间、物流公司、物流单号等信息。通过对发货数据的分析,可以判断出物流时效、发货效率等关键指标,进一步优化供应链和物流流程。
  • 收货和评价:用户收到商品后的评价、退换货活动等。评价数据不但反映了商品的质量和用户满意度,还对后续的购买决定产生影响。此外,退换货数据也可以或许反映出商品质量问题和物流中的痛点。
全量数据导入



  • MySQL => HDFS => Hive
  • 逐日加载全量数据,形成新的分区
  • MySQL Reader => HDFS Writer
产物分类表

  1. vim /opt/wzk/datax/product_category.json
复制代码
写入的内容如下所示:


  • 数据量小的表没有须要使用多个channel,使用多个channel会天生多个小文件
  • 实验命令之前要在HDFS上创建对应的目录:/user/data/trade.db/product_category/dt=yyyy-mm-dd
  1. {
  2.   "job": {
  3.     "setting": {
  4.       "speed": {
  5.         "channel": 1
  6.       }
  7.     },
  8.     "content": [
  9.       {
  10.         "reader": {
  11.           "name": "mysqlreader",
  12.           "parameter": {
  13.             "username": "hive",
  14.             "password": "hive@wzk.icu",
  15.             "column": [
  16.               "catId",
  17.               "parentId",
  18.               "catName",
  19.               "isShow",
  20.               "sortNum",
  21.               "isDel",
  22.               "createTime",
  23.               "level"
  24.             ],
  25.             "connection": [
  26.               {
  27.                 "table": [
  28.                   "wzk_product_category"
  29.                 ],
  30.                 "jdbcUrl": [
  31.                   "jdbc:mysql://h122.wzk.icu:3306/ebiz"
  32.                 ]
  33.               }
  34.             ]
  35.           }
  36.         },
  37.         "writer": {
  38.           "name": "hdfswriter",
  39.           "parameter": {
  40.             "defaultFS": "hdfs://h121.wzk.icu:9000",
  41.             "fileType": "text",
  42.             "path": "/user/data/trade.db/product_category/dt=$do_date",
  43.             "fileName": "product_category_$do_date",
  44.             "column": [
  45.               {
  46.                 "name": "catId",
  47.                 "type": "INT"
  48.               },
  49.               {
  50.                 "name": "parentId",
  51.                 "type": "INT"
  52.               },
  53.               {
  54.                 "name": "catName",
  55.                 "type": "STRING"
  56.               },
  57.               {
  58.                 "name": "isShow",
  59.                 "type": "TINYINT"
  60.               },
  61.               {
  62.                 "name": "sortNum",
  63.                 "type": "INT"
  64.               },
  65.               {
  66.                 "name": "isDel",
  67.                 "type": "TINYINT"
  68.               },
  69.               {
  70.                 "name": "createTime",
  71.                 "type": "STRING"
  72.               },
  73.               {
  74.                 "name": "level",
  75.                 "type": "TINYINT"
  76.               }
  77.             ],
  78.             "writeMode": "append",
  79.             "fieldDelimiter": ","
  80.           }
  81.         }
  82.       }
  83.     ]
  84.   }
  85. }
复制代码
写入的结果如下图:

加载数据的过程如下:
  1. do_date='2020-07-01'
  2. # 创建目录
  3. hdfs dfs -mkdir -p /user/data/trade.db/product_category/dt=$do_date
  4. # 数据迁移
  5. python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/product_category.json
  6. # 加载数据
  7. # hive 还没有表,后续再执行
  8. hive -e "alter table ods.ods_trade_product_category add partition(dt='$do_date')"
复制代码
对应的截图如下所示:
DataX将MySQL数据加载到HDFS上:

商家店肆表

wzk_shops => ods.ods_trade_shops
  1. vim /opt/wzk/datax/shops.json
复制代码
创建的内容:
  1. {
  2.   "job": {
  3.     "setting": {
  4.       "speed": {
  5.         "channel": 1
  6.       },
  7.       "errorLimit": {
  8.         "record": 0
  9.       }
  10.     },
  11.     "content": [
  12.       {
  13.         "reader": {
  14.           "name": "mysqlreader",
  15.           "parameter": {
  16.             "username": "hive",
  17.             "password": "hive@wzk.icu",
  18.             "column": [
  19.               "shopId",
  20.               "userId",
  21.               "areaId",
  22.               "shopName",
  23.               "shopLevel",
  24.               "status",
  25.               "createTime",
  26.               "modifyTime"
  27.             ],
  28.             "connection": [
  29.               {
  30.                 "table": [
  31.                   "wzk_shops"
  32.                 ],
  33.                 "jdbcUrl": [
  34.                   "jdbc:mysql://h122.wzk.icu:3306/ebiz"
  35.                 ]
  36.               }
  37.             ]
  38.           }
  39.         },
  40.         "writer": {
  41.           "name": "hdfswriter",
  42.           "parameter": {
  43.             "defaultFS": "hdfs://h121.wzk.icu:9000",
  44.             "fileType": "text",
  45.             "path": "/user/data/trade.db/shops/dt=$do_date",
  46.             "fileName": "shops_$do_date",
  47.             "column": [
  48.               {
  49.                 "name": "shopId",
  50.                 "type": "INT"
  51.               },
  52.               {
  53.                 "name": "userId",
  54.                 "type": "INT"
  55.               },
  56.               {
  57.                 "name": "areaId",
  58.                 "type": "INT"
  59.               },
  60.               {
  61.                 "name": "shopName",
  62.                 "type": "STRING"
  63.               },
  64.               {
  65.                 "name": "shopLevel",
  66.                 "type": "TINYINT"
  67.               },
  68.               {
  69.                 "name": "status",
  70.                 "type": "TINYINT"
  71.               },
  72.               {
  73.                 "name": "createTime",
  74.                 "type": "STRING"
  75.               },
  76.               {
  77.                 "name": "modifyTime",
  78.                 "type": "STRING"
  79.               }
  80.             ],
  81.             "writeMode": "append",
  82.             "fieldDelimiter": ","
  83.           }
  84.         }
  85.       }
  86.     ]
  87.   }
  88. }
复制代码
对应的截图如下所示:

数据加载实验如下指令:
  1. do_date='2020-07-02'
  2. # 创建目录
  3. hdfs dfs -mkdir -p /user/data/trade.db/shops/dt=$do_date
  4. # 数据迁移
  5. python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/shops.json
  6. # 加载数据
  7. # hive中还没有表 后续再执行
  8. hive -e "alter table ods.ods_trade_shops add
  9. partition(dt='$do_date')"
复制代码
DataX 数据库数据导入到 HDFS 结果如下:

商家地区构造表

wzk_shop_admin_org => ods.ods_trade_shop_admin_org
  1. vim /opt/wzk/datax/shop_org.json
复制代码
编写的内容如下所示:
  1. {
  2.   "job": {
  3.     "setting": {
  4.       "speed": {
  5.         "channel": 1
  6.       },
  7.       "errorLimit": {
  8.         "record": 0
  9.       }
  10.     },
  11.     "content": [
  12.       {
  13.         "reader": {
  14.           "name": "mysqlreader",
  15.           "parameter": {
  16.             "username": "hive",
  17.             "password": "hive@wzk.icu",
  18.             "column": [
  19.               "id",
  20.               "parentId",
  21.               "orgName",
  22.               "orgLevel",
  23.               "isDelete",
  24.               "createTime",
  25.               "updateTime",
  26.               "isShow",
  27.               "orgType"
  28.             ],
  29.             "connection": [
  30.               {
  31.                 "table": [
  32.                   "wzk_shop_admin_org"
  33.                 ],
  34.                 "jdbcUrl": [
  35.                   "jdbc:mysql://h122.wzk.icu:3306/ebiz"
  36.                 ]
  37.               }
  38.             ]
  39.           }
  40.         },
  41.         "writer": {
  42.           "name": "hdfswriter",
  43.           "parameter": {
  44.             "defaultFS": "hdfs://h121.wzk.icu:9000",
  45.             "fileType": "text",
  46.             "path": "/user/data/trade.db/shop_org/dt=$do_date",
  47.             "fileName": "shop_admin_org_$do_date.dat",
  48.             "column": [
  49.               {
  50.                 "name": "id",
  51.                 "type": "INT"
  52.               },
  53.               {
  54.                 "name": "parentId",
  55.                 "type": "INT"
  56.               },
  57.               {
  58.                 "name": "orgName",
  59.                 "type": "STRING"
  60.               },
  61.               {
  62.                 "name": "orgLevel",
  63.                 "type": "TINYINT"
  64.               },
  65.               {
  66.                 "name": "isDelete",
  67.                 "type": "TINYINT"
  68.               },
  69.               {
  70.                 "name": "createTime",
  71.                 "type": "STRING"
  72.               },
  73.               {
  74.                 "name": "updateTime",
  75.                 "type": "STRING"
  76.               },
  77.               {
  78.                 "name": "isShow",
  79.                 "type": "TINYINT"
  80.               },
  81.               {
  82.                 "name": "orgType",
  83.                 "type": "TINYINT"
  84.               }
  85.             ],
  86.             "writeMode": "append",
  87.             "fieldDelimiter": ","
  88.           }
  89.         }
  90.       }
  91.     ]
  92.   }
  93. }
复制代码
对应的截图如下所示:

数据加载脚本:
  1. do_date='2020-07-01'
  2. # 创建目录
  3. hdfs dfs -mkdir -p /user/data/trade.db/shop_org/dt=$do_date
  4. # 数据迁移
  5. python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/shop_org.json
  6. # 加载数据
  7. # hive中还没有表 后续再执行
  8. hive -e "alter table ods.ods_trade_shop_admin_org add
  9. partition(dt='$do_date')"
复制代码
写入的内容如下所示,从数据库将数据加载到HDFS中:

付出方式表

wzk_payments => ods.ods_trade_payments
  1. vim /opt/wzk/datax/payments.json
复制代码
对应的内容如下:
  1. {
  2.   "job": {
  3.     "setting": {
  4.       "speed": {
  5.         "channel": 1
  6.       },
  7.       "errorLimit": {
  8.         "record": 0
  9.       }
  10.     },
  11.     "content": [
  12.       {
  13.         "reader": {
  14.           "name": "mysqlreader",
  15.           "parameter": {
  16.             "username": "hive",
  17.             "password": "hive@wzk.icu",
  18.             "column": [
  19.               "id",
  20.               "payMethod",
  21.               "payName",
  22.               "description",
  23.               "payOrder",
  24.               "online"
  25.             ],
  26.             "connection": [
  27.               {
  28.                 "table": [
  29.                   "wzk_payments"
  30.                 ],
  31.                 "jdbcUrl": [
  32.                   "jdbc:mysql://h122.wzk.icu:3306/ebiz"
  33.                 ]
  34.               }
  35.             ]
  36.           }
  37.         },
  38.         "writer": {
  39.           "name": "hdfswriter",
  40.           "parameter": {
  41.             "defaultFS": "hdfs://h121.wzk.icu:9000",
  42.             "fileType": "text",
  43.             "path": "/user/data/trade.db/payments/dt=$do_date",
  44.             "fileName": "payments_$do_date.dat",
  45.             "column": [
  46.               {
  47.                 "name": "id",
  48.                 "type": "INT"
  49.               },
  50.               {
  51.                 "name": "payMethod",
  52.                 "type": "STRING"
  53.               },
  54.               {
  55.                 "name": "payName",
  56.                 "type": "STRING"
  57.               },
  58.               {
  59.                 "name": "description",
  60.                 "type": "STRING"
  61.               },
  62.               {
  63.                 "name": "payOrder",
  64.                 "type": "INT"
  65.               },
  66.               {
  67.                 "name": "online",
  68.                 "type": "TINYINT"
  69.               }
  70.             ],
  71.             "writeMode": "append",
  72.             "fieldDelimiter": ","
  73.           }
  74.         }
  75.       }
  76.     ]
  77.   }
  78. }
复制代码
对应的截图如下:

数据导入的过程如下:
  1. do_date='2020-07-01'
  2. # 创建目录
  3. hdfs dfs -mkdir -p /user/data/trade.db/payments/dt=$do_date
  4. # 数据迁移
  5. python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/payments.json
  6. # 加载数据
  7. # hive还没有表 后续再执行
  8. hive -e "alter table ods.ods_trade_payments add
  9. partition(dt='$do_date')"
复制代码
从MySQL中将数据加载到HDFS中:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表