Skip to content
qifeng dai edited this page Oct 11, 2017 · 17 revisions

说明:使用UDP平台,演示如何根据mysql数据库内数据,计算全球最热的城市TopN,并将结果自动存储到MongoDB。

步骤如下:

  1. 导入节点将数据从mysql内导入到UDP内HDFS上
  2. MR 数据清洗校正
  3. shell节点将结果
  4. Hive节点计算TopN,topN中的N作为用户自定义参数可以配置
  5. 导出节点将数据从Hive表内导出到外部MongoDB数据库
  6. 设置UDP调度,每日凌晨2点,自动运行

准备工作

  1. 外部mysql数据库及表

执行如下SQL,创建库及授权

CREATE DATABASE {db-name} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON {db-name}.* TO '{db-user}'@'%' IDENTIFIED BY '{password}';
GRANT ALL PRIVILEGES ON {db-name}.* TO '{db-user}'@'localhost' IDENTIFIED BY '{password}';

执行如下SQL,创建温度输入表

CREATE TABLE `global_land_temperatures_by_city` (
  `dt` date NOT NULL,
  `average_temperature` double DEFAULT NULL,
  `average_temperature_uncertainty` double DEFAULT NULL,
  `city` text NOT NULL,
  `country` text NOT NULL,
  `latitude` text NOT NULL,
  `longitude` text NOT NULL,
  `year` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  1. MongoDB数据库

准备好MongoDB服务

  1. MR计算jar资源

在项目根目录下,执行,如下命令

mvn clean package -pl examples -am

在{udp_demo_home}/examples/target目录下,会有examples-{version}.jar文件,该jar内包含了MR class.

UDP配置

  1. 添加数据源将mysql及mongoDB地址,按数据源配置添加UDP数据源, 假设添加的数据源名称为 udp_demo_mysqludp_demo_mongo

  2. 将编译好的MR jar通过资源管理上传到UDP平台内,假设资源名称为 mr_jar

  3. 数据开发 -> 工作流开发内新建工作流. 如下:

新建工作流

  1. 双击打开工作流,解锁后,添加导入节点

添加导入节点

  1. 双击导入节点,编辑详情

添加导入节点

  1. 添加MR节点,并编辑详情

运行主class为 com.baifendian.udp.example.mr.App

参数设置:

第一个参数为刚才导入节点的HDFS路径,第二个参数,为MR清洗输出路径.

由于此处的输入和输出路径,在其他节点也需要引用。所以,可以设置成自定义参数。如下:

MR节点及自定义参数

  1. 添加shell节点,编辑详情

通过shell节点,将MR清洗后的数据,导入到Hive表内。在shell节点内输入如下语句:

hive -e "LOAD DATA INPATH '${demoHdfsOutPath}' OVERWRITE INTO TABLE my_bloxy.global_land_temperatures_by_city"

SHELL节点

  1. 添加SQL节点,编辑详情

在sql节点内,添加如下参数

INSERT INTO top_n SELECT country, city, max(average_temperature) max_temp FROM my_bloxy.global_land_temperatures_by_city t GROUP BY country, city ORDER BY max_temp LIMIT 10
  1. 添加导出节点

通过导出节点,将数据从UDP导出到mongoDB内

导出节点

  1. 运行依赖设置

根据节点运行先后顺序,进行依赖设置。如下:

节点依赖

  1. 运行测试

节点参数及依赖设置完成后,可以运行工作流,进行测试.

运行结束后,可以在运维中心查看运行结果。如果发现运行失败,可以通过节点日志,查看失败原因,进行修改。日志查看如下:

日志查看

重复上述步骤,直到运行成功

  1. 发布上线

运行测试成功后,便可以发布上线了。

发布上线

  1. 设置调度

工作流发布成功后,在运维中心 -> 工作流设置 找到工作流,点击调度设置,设置调度信息。

调度设置

  1. 上线

调度设置成功后,便可以上线。这样,整个工作流,便会按照调度设置的,进行自动调度运行了

Clone this wiki locally