【SDC】StreamSets - Hive漂移同步解决方案

本文介绍了StreamSets如何解决Hive数据漂移问题,包括数据漂移的概念、环境与设置、HDFS和Hive的配置,以及具体的Hive漂移同步解决方案。文章详细阐述了Hive Metadata processor、Hive Metastore destination和Hadoop FS destination的配置,并提供了权限配置和建表示例。
摘要由CSDN通过智能技术生成

什么漂移同步

在解释漂移同步之前,首先简单说明以下数据漂移的概念。

数据漂移,简单来说,就是数据存放时间分区错误。在数据仓库的源数据表分区中,同一业务日期数据下包含了不属于该天的数据或者丢失了该天的变更数据。这个一般是时间戳不准确导致的,而时间戳不准确的原因有很多,这里不做过多说明,可以自行查询资料了解。

漂移同步,就是解决数据漂移这个问题的,根据构建的策略,将数据同步到正确的表中。

Hive漂移同步解决方案,是StreamSets提供的一整套解决方案,可以将输入数据实时同步到相应的Hive表中。这个方案除了解决数据漂移的问题,还有一个强大的功能是可以同步多库多表。

环境和设置

环境

服务版本
操作系统CentOS Linux release 7.8.2003 (Core)
CDH6.3.2
StreamSets Data Collector (简称SDC)3.16.1

由于CDH启用了Kerberos和Sentry,在通过SDC构建Hive漂移同步的Pipeline之前,需要做一些配置。

SDC启用Kerberos之后,默认主体是sdc,下面也是以这个用户进行配置。

设置

HDFS设置

我希望SDC写入Hive warehouse的目录和文件所属是hive用户,要实现这个目的,需要使用SDC的模拟用户配置,同时需要在HDFS中配置sdc的代理配置。

使用管理员登录Cloudera Manger,在HDFS服务的配置中,搜索 core-site.xml 的群集范围高级配置代码段(安全阀),添加如下配置:

配置说明
hadoop.proxyuser.sdc.hosts*允许sdc用户在所有主机上模拟其他用户。
hadoop.proxyuser.sdc.groups*允许sdc用户模拟所有用户组的用户。

Hive设置

假设SDC向Hive ods数据库写数据,需要为sdc用户进行授权。

SDC可以自动创建不存在的表,没有测试成功,这里使用手动创建表的方法。

手动创建表,不需要将全部字段创建出来,只需要满足创建表的最小语法要求就行,建完表之后,漂移同步会将其他字段创建出来。

Hive漂移同步方案支持Avro和Parqurt两种存储格式,默认支持Avro,如果要使用Parquet,需要增加一个Avro转Parquet的步骤,这里使用Avro格式。

假设目标表名为 ods_user,拥有字段userid,user_name等,使用userid字段建表,建表语句如下:

CREATE TABLE ods_user (
userid INT)
PARTITIONED BY(dt STRING)
STORED AS AVRO;

注意,用于建表的字段类型要和源数据相应字段的类型保持一致,否则sdc会报错。

接下来是权限配置,最低权限配置如下:

对象权限
odsSELECT,INSERT
ods.*ALL

Hive漂移同步解决方案

参考Drift Synchronization Solution for Hive

要点说明

Hive漂移同步解决方案主要通过Hive Metadata processor,Hive Metastore destination,和Hadoop FS 或 MapR FS destination 实现。

在这里插入图片描述

另外漂移同步不支持嵌套域,如果有嵌套域,需要增加Field Flattener来展开记录,如下:

在这里插入图片描述

主要配置说明

我用到的核心的Stages是Hive Metadata processorHive Metastore destination,和Hadoop FS destination。这里对其主要配置进行一些说明,

Hive Metadata processor

General

配置
Stage LibraryCDH 6.3.0

Hive

配置
JDBC URLjdbc:hive2://gateway01.bigdata.zxxk.com:10000/default;principal=hive/gateway01.bigdata.zxxk.com@BIGDATA.ZXXK.COM
Hadoop Configuration Directory/etc/hive/conf

Table

配置说明
Database Expressionods多库多表时,从header属性获取
Table Nameods_user多库多表时,从header属性获取
Partition Configuration表分区配置
Decimal Scale Expression小数规模。可以使用表达式或常数。
Decimal Precision Expression小数精度。可以使用表达式或常数。

两个Decimal配置的默认值是针对JDBC Query Consumer 或 JDBC Multitable Consumer产生的数据的。

Advance

配置说明
Data Time Zone+8:00 CT (Asia/Chongqing)时区。

Data Format

Hive Metastore destination

General

配置
Stage LibraryCDH 6.3.0

Hive

配置
JDBC URLjdbc:hive2://gateway01.bigdata.zxxk.com:10000/default;principal=hive/gateway01.bigdata.zxxk.com@BIGDATA.ZXXK.COM
Hadoop Configuration Directory/etc/hive/conf

Hadoop FS destination

General

配置
Stage LibraryCDH 6.3.0

Connection

配置说明
Impersonation Userhive模拟用户。
Kerberos AuthenticationTrue使用Kerberos认证。
Configuration Files Directory/etc/hadoop/conf

Output Files

配置说明
Directory in Header通用。如果True,则从header属性的targetDirectory中读取。如果False,则使用Directory Template配置。
Directory Template/user/hive/warehouse/ods.db/ods_user适用于单库单表,可以指定固定的值。
Data Time Zone+8:00 CT (Asia/Chongqing)时区。
Use Roll AttributeTrue使用滚动属性。
Roll Attribute Nameroll固定值。不要使用其他值。

Data Format

配置
Data FormatAvro
Avro Schema LocationIn Record Header
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值