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
本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://lrting.top/backend/bigdata/hudi/hudi-basic/5713/