大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQ ...

打印 上一主题 下一主题

主题 843|帖子 843|积分 2529

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

Java篇开始了!

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



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

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


  • 广告业务 测试
  • FlumeAgent 加载ODS、DWD层

导入数据

加载ADS层

ad_show_page

  1. sh /opt/wzk/hive/ads_load_ad_show_page.sh 2020-07-21
复制代码
执行结果如下图所示:

查看Hive中的数据:
  1. hive
  2. use ads;
  3. select * from ads_ad_show_place limit 5;
复制代码
运行结果如下图所示:

继承导入其他数据:
  1. sh /opt/wzk/hive/ads_load_ad_show_page.sh 2020-07-22
  2. sh /opt/wzk/hive/ads_load_ad_show_page.sh 2020-07-23
  3. sh /opt/wzk/hive/ads_load_ad_show_page.sh 2020-07-24
  4. ...省略
复制代码
最终的Hive的数据量如下所示:
  1. select count(*) from ads_ad_show_place;
复制代码
对应图片为:

ad_show_page_window

  1. sh /opt/wzk/hive/ads_load_ad_show_page_window.sh 2020-07-21
复制代码
执行结果如下所示:

查看Hive中的数据如下:
  1. hive
  2. use ads;
  3. select * from ads_ad_show_place_window limit 5;
复制代码
执行结果如下图所示:

继承加载其他的数据:
  1. sh /opt/wzk/hive/ads_load_ad_show_page_window.sh 2020-07-22
  2. sh /opt/wzk/hive/ads_load_ad_show_page_window.sh 2020-07-23
  3. sh /opt/wzk/hive/ads_load_ad_show_page_window.sh 2020-07-24
  4. ...省略
复制代码
Hive中的数据总数如下:
  1. select count(*) from ads_ad_show_place_window;
复制代码
运行结果如下所示:

导出数据

执行步骤



  • 在MySQL创建对应的表
  • 创建配置文件(JSON)
  • 执行下令,利用JSON配置文件,测试
  • 编写执行脚本(Shell)
  • Shell脚本的测试
MySQL

  1. drop table if exists dwads.ads_ad_show_place;
  2. create table dwads.ads_ad_show_place(
  3.   ad_action tinyint,
  4.   hour varchar(2),
  5.   place varchar(20),
  6.   product_id int,
  7.   cnt int,
  8.   dt varchar(10)
  9. );
复制代码
执行结果如下图所示:

DataX

配置文件

  1. vim /opt/wzk/datax/ads_ad_show_place.json
复制代码
写入的内容如下所示:
  1. {
  2.   "job":{
  3.     "setting":{
  4.       "speed":{
  5.         "channel":1
  6.       }
  7.     },
  8.     "content":[
  9.       {
  10.         "reader":{
  11.           "name":"hdfsreader",
  12.           "parameter":{
  13.             "path":"/user/hive/warehouse/ads.db/ads_ad_show_place/dt=$do_date/*",
  14.             "defaultFS":"hdfs://h121.wzk.icu:9000",
  15.             "column":[
  16.               {
  17.                 "index":0,
  18.                 "type":"string"
  19.               },
  20.               {
  21.                 "index":1,
  22.                 "type":"string"
  23.               },
  24.               {
  25.                 "index":2,
  26.                 "type":"string"
  27.               },
  28.               {
  29.                 "index":3,
  30.                 "type":"string"
  31.               },
  32.               {
  33.                 "index":4,
  34.                 "type":"string"
  35.               },
  36.               {
  37.                 "type":"string",
  38.                 "value":"$do_date"
  39.               }
  40.             ],
  41.             "fileType":"text",
  42.             "encoding":"UTF-8",
  43.             "fieldDelimiter":","
  44.           }
  45.         },
  46.         "writer":{
  47.           "name":"mysqlwriter",
  48.           "parameter":{
  49.             "writeMode":"insert",
  50.             "username":"hive",
  51.             "password":"hive@wzk.icu",
  52.             "column":[
  53.               "ad_action",
  54.               "hour",
  55.               "place",
  56.               "product_id",
  57.               "cnt",
  58.               "dt"
  59.             ],
  60.             "preSql":[
  61.               "delete from ads_ad_show_place
  62.               where dt='$do_date'"
  63.             ],
  64.             "connection":[
  65.               {
  66.                 "jdbcUrl":"jdbc:mysql://h122.wzk.icu:3306/dwads?useUnicode=true&characterEncoding=utf-8",
  67.                 "table":[
  68.                   "ads_ad_show_place"
  69.                 ]
  70.               }
  71.             ]
  72.           }
  73.         }
  74.       }
  75.     ]
  76.   }
  77. }
复制代码
写入内容如下所示:

DataX 简介

DataX 是由阿里巴巴开源的分布式离线数据同步工具,用于解决差别存储系统之间的数据传输问题。它被筹划为一种高效、稳定、易扩展的工具,可以或许适应多种复杂的数据同步需求。
核心特点

支持多种数据源:


  • 关系型数据库: MySQL, PostgreSQL, Oracle, SQL Server, DB2 等。
  • NoSQL 数据库: MongoDB, HBase 等。
  • 大数据存储系统: Hive, MaxCompute (ODPS), HDFS。
  • 其他: FTP 文件、ElasticSearch 等。
高性能:


  • 基于多线程的并行架构,能充实利用机器的多核性能。
  • 支持分片传输,进步数据传输的吞吐量。
灵活性和易用性:


  • 配置文件化:利用 JSON 格式的配置文件定义使命,简单直观。
  • 支持使命调理,可与调理工具集成实现定时使命。
  • 兼容多种数据格式和传输协议。
扩展性:


  • 插件式架构,开发者可以通过编写 Reader 和 Writer 插件支持新的数据源。
开源与社区支持:


  • 基于 Apache 2.0 开源协议,开发者可以自由利用和修改。
  • 拥有活跃的社区和丰富的文档支持。
组成部分

Reader:


  • 负责从数据源中读取数据。
  • 示例:MySQLReader, HdfsReader。
Writer:


  • 负责将数据写入目的存储。
  • 示例:MySQLWriter, HdfsWriter。
Framework:


  • DataX 的核心调理引擎,负责 Reader 和 Writer 的协调工作。
  • 提供错误处理、数据校验、性能优化等功能。
Transform:


  • 用于对传输的数据进行处理和转换(可选)。
  • 例如数据格式的转换、字段的增删改等。
工作流程

初始化:


  • 加载用户配置的 JSON 文件,剖析 Reader 和 Writer 的配置。
  • 准备使命上下文。
读取数据:


  • Reader 读取源数据并以批量的方式输出。
转换数据:


  • 可选步骤,Transform 模块对数据进行处理。
写入数据:


  • Writer 汲取 Reader 输出的数据并将其写入目的存储。
使命管理与监控:


  • DataX 提供实时的使命运行日志和统计信息,包括速度、成功率、错误信息等。
执行导出

  1. vim /opt/wzk/hive/ads_ad_show_place.sh
复制代码
写入的内容如下所示:
  1. #!/bin/bash
  2. source /etc/profile
  3. JSON=/opt/wzk/datax
  4. if [ -n "$1" ] ;then
  5. do_date=$1
  6. else
  7. do_date=`date -d "-1 day" +%F`
  8. fi
  9. python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" $JSON/ads_ad_show_place.json
复制代码
写入结果如下图:

执行脚本可以得到结果:
  1. sh /opt/wzk/hive/ads_ad_show_place.sh 2020-07-21
复制代码
执行过程如下图所示:

查看结果

执行结束

查看数据库的结果如下所示:


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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表