StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

1.文档编写目的


通过StreamSets实现数据采集,在实际生产中需要实时捕获MySQL、Oracle等其他数据源的变化数据(简称CDC)将变化数据实时的写入大数据平台的Hive、HDFS、HBase、Solr、Elasticserach等。本篇文章主要介绍如何使用使用StreamSets通过JDBC的方式实时抽取增量数据到Hive。

StreamSets实现的流程如下:StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

  • 内容概述

1.环境准备

2.创建StreamSets的Pipeline流程

3.Pipeline流程测试

  • 测试环境

1.StreamSets版本为3.1.2.0

2.CM和CDH版本为5.13.1

3.MariaDB版本为5.5.44

2.环境准备


1.准备测试表和数据

[root@cdh4 ~]# mysql -uroot -p
Enter password: 
MariaDB [(none)]> use test;
MariaDB [test]> create table test_to_hive (s1 varchar(20),s2 varchar(20));
MariaDB [test]> insert into test_to_hive values ("1","aaa");
MariaDB [test]> insert into test_to_hive values ("2","bbb");
MariaDB [test]> select * from test_to_hive;

(可左右滑动)

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

3.创建StreamSets的Pipline


1.创建新的管道流

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

配置错误日志输入路径,这里配置到本地的/tmp/sdctest(需要自己创建)目录下

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive
StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive
2.添加JDBC查询者
StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到HiveStreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到HiveStreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到HiveStreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive
3.执行预览检查

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

查看结果如下

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

4.添加Hive Metadata

将JDBC 链接到 Hive Metadata 配置hive 的JDBC URL

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

配置数据库和要生成的表名,这里我们没有分区,删掉分区

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

选择Avro 格式

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

5.将Hive Metadata 输出到 HiveMetastore

将Hive Metadata的 Metadata 链接到Hive Metastore

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

修改配置

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

6.将Hive Metadata的data 输出到HDFS 上

将Hive Metadata的 data链接到Hadoop FS 1

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

7.统一选择包版本

这里测试环境是CDH 5.13

HiveMetadata

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

Hadoop FS

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

Hive Metastore

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

8.校验并执行

点击校验,返回成功后点击执行

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

执行后可以看到有2条数据输入和输出,这与我们测试数据库的数据相符合

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

去HUE 页面查看hive 表中的数据,发现已经更新进来

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

4.Pipeline流程测试


1.去mysql 中增加数据并查看

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

查看管道流信息发现输入输出数量变成了4

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

去HUE 中查看hive 表的数据,跟mysql 中同步,说明增量更新成功

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

5.常见问题


1.校验的时候找不到 hive.conf.HiveConf

出现如下异常,说明包不对,参考 2.8步骤重置配置

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

2.JDBC 链接不通

新建文件夹/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras,

并赋予给用户sdc

mkdir /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras
chown sdc:sdc /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras

(可左右滑动)

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

上传JDBC驱动

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

上传成功后如下:

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

在CM中配置StreamSets包的路径

export STREAMSETS_LIBRARIES_EXTRA_DIR="/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/sdc-extras/"

(可左右滑动)

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

如果存在权限问题还需要配置安全策略给该目录授权:

grant codebase "file:///opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/sdc-extras/-" {
  permission java.security.AllPermission;
};

(可左右滑动)
StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

上一篇:2022-02-21每日刷题打卡


下一篇:早报 2月21日 周一