Apache Hudi表自动同步至阿里云数据湖分析DLA
1. 引入
Hudi 0.6.0版本之前只支持将Hudi表同步到Hive或者兼容Hive的MetaStore中,对于云上其他使用与Hive不同SQL语法MetaStore则无法支持,为解决这个问题,近期社区对原先的同步模块hudi-hive-sync进行了抽象改造,以支持将Hudi表同步到其他类型MetaStore中,如阿里云的数据湖分析DLA(https://www.aliyun.com/product/datalakeanalytics中。
2. 抽象
将Hudi表同步至Hive MetaStore的代码在hudi-hive-sync模块,为兼容更多类型MetaStore,现将其改造为如下模块
hudi-sync
|-hudi-sync-common
|-hudi-hive-sync
|-hudi-dla-sync
其中各模块说明如下
- hudi-sync-common表示元数据同步公共模块,用于存放一些用于同步的公共父类;
- hudi-hive-sync表示同步Hive模块;
- hudi-dla-sync表示同步阿里云DLA模块;
基于上述结构,用户可基于hudi-sync-common构建自定义的元数据同步逻辑。
3. 配置
下面以DLA为例,介绍如何通过Spark写入Hudi表后自动将Hudi表同步至DLA中,同步核心配置如下
df.write().format("hudi").
options(getQuickstartWriteConfigs()).
option(PRECOMBINE_FIELD_OPT_KEY(), "ts").
option(RECORDKEY_FIELD_OPT_KEY(), "name").
option(PARTITIONPATH_FIELD_OPT_KEY(), "location").
option("hoodie.embed.timeline.server", false).
option(TABLE_NAME, tableName).
option(TABLE_TYPE_OPT_KEY(), tableType).
option(META_SYNC_CLIENT_TOOL_CLASS(), "org.apache.hudi.dla.DLASyncTool").
option(META_SYNC_ENABLED_OPT_KEY(), "true").
option("hoodie.datasource.dla_sync.database", dbName).
option("hoodie.datasource.dla_sync.table", tableName).
option("hoodie.datasource.dla_sync.username", dlaUsername).
option("hoodie.datasource.dla_sync.password", dlaPassword).
option("hoodie.datasource.dla_sync.jdbcurl", dlaJdbcUrl).
option("hoodie.datasource.dla_sync.partition_fields", "location").
option("hoodie.datasource.dla_sync.partition_extractor_class", "org.apache.hudi.hive.MultiPartKeysValueExtractor").
mode(saveMode).
save(basePath);
关键配置项说明如下:
META_SYNC_CLIENT_TOOL_CLASS()表示进行同步的类,指定为org.apache.hudi.dla.DLASyncTool表示通过DLASyncTool进行同步,与HiveSyncTool同步至Hive功能类似;hoodie.datasource.dla_sync.database表示同步至DLA中的数据库名;hoodie.datasource.dla_sync.table表示同步至DLA中的表名;hoodie.datasource.dla_sync.username表示连接DLA的用户名;hoodie.datasource.dla_sync.password表示连接DLA的密码;hoodie.datasource.dla_sync.jdbcurl表示连接DLA的JDBC连接;hoodie.datasource.dla_sync.partition_fields表示同步至DLA的分区字段;hoodie.datasource.dla_sync.partition_extractor_class表示同步至DLA的分区值解析器;
除了上述配置外,还需要在pom.xml依赖中新增hudi-dla-sync依赖(hudi.version为0.6.0-SNAPSHOT)
<dependency>
<groupId>org.apache.hudi</groupId>
<artifactId>hudi-dla-sync</artifactId>
<version>${hudi.version}</version>
</dependency>
4. 同步
上述配置中,数据库名配置为hudi_dla_demo_db,表名配置为hudi_trips_dal_demo;其他用户名、密码、JDBC连接配置可参考如下链接:https://help.aliyun.com/document_detail/110829.html。配置完后即可在Spark写入Hudi时自动将Hudi表同步至DLA,同步结果如下

查询表结果如下:


为方便用户直观感受到将Hudi表同步到DLA,可参考这里https://help.aliyun.com/document_detail/173653.html直接运行对应Jar包来快速构建基于Hudi和DLA的数据湖。
5. 总结
可以看到基于最新的Hudi版本,用户可自定义Hudi表同步MetaStore逻辑,同时只需要非常简单的配置即可完成自动同步,并且以同步至DLA为例,给出了关键配置,该功能将在近期发布的0.6.0版本中释出。
Apache Hudi表自动同步至阿里云数据湖分析DLA的更多相关文章
- Apache Hudi:云数据湖解决方案
1. 引入 开源Apache Hudi项目为Uber等大型组织提供流处理能力,每天可处理数据湖上的数十亿条记录. 随着世界各地的组织采用该技术,Apache开源数据湖项目已经日渐成熟. Apache ...
- Linux目录同步到阿里云OSS工具ossutil
Linux目录同步到阿里云OSS工具ossutil 背景 最近公司服务用户激增,常规文件服务器不能满足需求,严重影响性能,决定将静态文件迁移到阿里云OSS,用来解决性能问题,提高用户体验.毕竟之前 ...
- apache中的https设置基于阿里云免费ssl服务
环境是:debian7+apache2.2+阿里云免费ssl服务,站点以前的http已经在运行了, 1.开通阿里云免费SSL&DNS解析配置 购买位置:打开阿里云找到“产品”-“安全”-“CA ...
- 【Linux】扩展阿里云数据盘分区和文件系统
扩容云盘只是扩大存储容量,不会扩容文件系统 一.准备工作 在扩展数据盘扩展分区和文件系统前,请提前完成以下工作. 创建快照以备份数据,防止操作失误导致数据丢失. 通过ECS控制台或者API扩容云盘容量 ...
- Linux 系统挂载阿里云数据盘
适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) * Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 下面的操作将会把数据盘划 ...
- [saiku] 使用 Apache Phoenix and HBase 结合 saiku 做大数据查询分析
saiku不仅可以对传统的RDBMS里面的数据做OLAP分析,还可以对Nosql数据库如Hbase做统计分析. 本文简单介绍下一个使用saiku去查询分析hbase数据的例子. 1.phoenix和h ...
- 干货!Apache Hudi如何智能处理小文件问题
1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...
- 实战 | 将Apache Hudi数据集写入阿里云OSS
1. 引入 云上对象存储的廉价让不少公司将其作为主要的存储方案,而Hudi作为数据湖解决方案,支持对象存储也是必不可少.之前AWS EMR已经内置集成Hudi,也意味着可以在S3上无缝使用Hudi.当 ...
- Apache Hudi又双叕被国内顶级云服务提供商集成了!
是的,最近国内云服务提供商腾讯云在其EMR-V2.2.0版本中优先集成了Hudi 0.5.1版本作为其云上的数据湖解决方案对外提供服务 Apache Hudi 在 HDFS 的数据集上提供了插入更新和 ...
随机推荐
- JVM系列-方法调用的原理
JVM系列-方法调用的原理 最近重新看了一些JVM方面的笔记和资料,收获颇丰,尤其解决了长久以来心中关于JVM方法管理的一些疑问.下面介绍一下JVM中有关方法调用的知识. 目的 方法调用,目的是选择方 ...
- 【高性能Mysql 】读书笔记(一)
第1章 Mysql架构与历史 MYSQL最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理( Query Processing)及其他系统任务( Server Task)和数据的存储 ...
- C# 人脸识别库 0.2
ViewFaceCore 0.2 超简单的 C# 人脸识别库 前言: 首先谢谢大家对这个库的关注,前一篇博文得到了大家的 支持 和 Star,十分开心.本想尽快实现大家的期待的活体检测功能,但是前段时 ...
- 数据库-SQL查询语言(一)
SQL数据定义 DDL sql的DDL不仅能定义一组关系,还能定义每个关系的信息,包括: 每个关系的模式 每个属性的取值类型 完整性约束 每个关系的维护的索引集合 每个关系的安全性和权限信息 每个关系 ...
- CCNA - Part10 数据包的通信过程
这篇文章主要是对数据包在同网段和不同网段的转发流程梳理,使用 ping 命令进行实际抓包测试. 网关的概念: 对于像 PC 等终端设备来说,通过交换机可以实现同网段的通信.但如果想要给其他网段发生数据 ...
- 用Python爬取双色球开奖信息,了解一下
1工具 2具体方法 1.使用python2.7编写爬取脚本 这里除了正常的爬取操作,还增加了独立的参数设定.如果没有参数,爬取的数据就在当前目录下:如果有参数,可以设定保存目录.保存文件名后缀 ...
- Spring+hibernate+JSP实现Piano的数据库操作---1.目录结构+展示
目录结构 界面
- Django学习路33_url 地址及删除元素 delete() 和重定向 return redirect('路径')
保存日期 def create(request): '''新增一本图书''' # 1.创建BookInfo对象 b = BookInfo() b.btitle = '流星蝴蝶剑' b.bpub_d ...
- PHP 命名空间(namespace)定义
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...
- PHP get_resource_type() 函数
get_resource_type() 返回资源(resource)类型. 版本要求:PHP 4 >= 4.0.2, PHP 5, PHP 7高佣联盟 www.cgewang.com 语法 st ...