Hudi Transformers(转换器)

Apache Hudi提供了一个HoodieTransformer Utility,允许您在将源数据写入Hudi表之前对其进行转换。有几种开箱即用的转换器,您也可以构建自己的自定义转换器类。

SQL查询转换器

您可以传递要在写入期间执行的 SQL 查询。

--transformer-class org.apache.hudi.utilities.transform.SqlQueryBasedTransformer
--hoodie-conf hoodie.deltastreamer.transformer.sql=SELECT a.col1, a.col3, a.col4 FROM <SRC> a

SQL文件转换器

您可以使用要在写入期间执行的 SQL 脚本指定文件。 SQL 文件配置了这个 hoodie 属性:hoodie.deltastreamer.transformer.sql.file

查询应将源引用为名为“\”的表

最终的 sql 语句结果用作写入有效负载。

示例 Spark SQL 查询:

CACHE TABLE tmp_personal_trips AS
SELECT * FROM <SRC> WHERE trip_type='personal_trips';

SELECT * FROM tmp_personal_trips;

Flattening转换器

该转换器可以展平嵌套对象。 它通过以嵌套方式为内部字段添加外部字段和 _ 前缀来展平传入记录中的嵌套字段。 目前不支持扁平化数组。

示例模式可能如下所示,其中名称是原始源中 StructType 的嵌套字段

age as intColumn,address as stringColumn,name.first as name_first,name.last as name_last, name.middle as name_middle

将配置设置为:

--transformer-class org.apache.hudi.utilities.transform.FlatteningTransformer

链式转换器

如果您希望同时使用多个转换器,您可以使用链式转换器传递多个以顺序执行。

下面的示例首先展平传入的记录,然后根据指定的查询进行 sql 投影:

--transformer-class org.apache.hudi.utilities.transform.FlatteningTransformer,org.apache.hudi.utilities.transform.SqlQueryBasedTransformer   
--hoodie-conf hoodie.deltastreamer.transformer.sql=SELECT a.col1, a.col3, a.col4 FROM <SRC> a

AWS DMS转换器

此转换器特定于 AWS DMS 数据。 如果字段不存在,它会添加值为 I 的 Op 字段。

将配置设置为:

--transformer-class org.apache.hudi.utilities.transform.AWSDmsTransformer

自定义转换器

您可以通过扩展此类来编写自己的自定义转换器

原文链接:https://hudi.apache.org/docs/transforms

4 1 投票
文章评分

本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://lrting.top/backend/bigdata/hudi/hudi-basic/5713/

(1)
上一篇 2022-05-31 09:34
下一篇 2022-06-01 10:34

相关推荐

订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x