开发者概览
Substrait 修改
登录后可跨设备保存划线和私人笔记登录
Substrait 是一个旨在为数据计算操作创建定义明确、跨语言规范的项目。由于它仍在积极开发中,Gluten 所需的一些计算操作目前还缺少对应的表示。同时,一些已有的表示也需要稍作修改,以满足计算需求。
在 Gluten 中,Substrait 的基础版本是 v0.23.0,其中的部分消息已 rebase 到较新的上游版本(在下方每一条目中注明)。本页记录了 Gluten 对 Substrait proto 文件所做的全部修改,以供参考。这些改动最好能上游合入 Substrait,但对于无法上游的改动,可以考虑 AdvancedExtension 之类的替代方案。
本地新增内容的编号约定。 Gluten 本地字段从 1000 开始编号,位于上游分配的范围之外,这样未来上游新增字段时就不会与它们冲突。之所以采用这一约定,是因为过去将本地字段附加到下一个可用的小编号上的做法曾导致冲突:Gluten 的 bucket_spec 最初被附加在 WriteRel 的字段 7 上,而上游 v0.98.0 后来把该编号分配给了 common。
对 algebra.proto 的修改
- 在
FileOrFiles中新增了JsonReadOptions和TextReadOptions(devlive-community/knowforge#1584)。 - 将连接类型
JOIN_TYPE_SEMI改为JOIN_TYPE_LEFT_SEMI和JOIN_TYPE_RIGHT_SEMI(devlive-community/knowforge#408)。 - 新增了
WindowRel,在WindowFunction中新增了column_name和window_type,将WindowFunction中的Unbounded改为Unbounded_Preceding和Unbounded_Following,并新增了 WindowType(devlive-community/knowforge#485)。 - 在 RelRoot 中新增了
output_schema(devlive-community/knowforge#1901)。 - 新增了
ExpandRel(devlive-community/knowforge#1361)。 - 新增了
GenerateRel(devlive-community/knowforge#574)。 - 在
LocalFiles中新增了PartitionColumn(devlive-community/knowforge#2405)。 - 新增了
WriteRel(devlive-community/knowforge#3690)。 - 新增了
TopNRel(devlive-community/knowforge#5409)。 - 在窗口边界
Preceding和Following中新增了ref字段(devlive-community/knowforge#5626)。 - 在
WriteRel中新增了BucketSpec字段(devlive-community/knowforge#8386)。 - 在
ReadRel中新增了StreamKafka(devlive-community/knowforge#8321)。 - 将
WriteRel的内容 rebase 到上游v0.98.0:字段 7 现在是common,新增了create_mode(8)和advanced_extension(9),并将OutputMode的取值OUTPUT_MODE_MODIFIED_TUPLES重命名为OUTPUT_MODE_MODIFIED_RECORDS。Gluten 的BucketSpec字段从字段 7 移到了 1000。外层的Rel.writeoneof 标签目前仍保留为 18;将整个Reloneof 统一到上游的编号属于另一项独立改动。请注意,Gluten 将其写入器配置附加在named_table.advanced_extension上,而不是附加在新的顶层WriteRel.advanced_extension上,因为没有任何 Gluten 代码读取后者。WriteRel.common使用的是 Gluten 在 0.98 之前的RelCommon副本(缺少rel_anchor、Hint.alias、Hint.output_names以及 saved/loaded 计算相关消息),因此无法携带完整的 0.98common载荷。
对 type.proto 的修改
- 在
Type中新增了Nothing(devlive-community/knowforge#791)。 - 在
Struct中新增了names(devlive-community/knowforge#1878)。 - 在
NamedStruct中新增了PartitionColumns(devlive-community/knowforge#320)。 - 移除
PartitionColumns并在NamedStruct中新增column_types(devlive-community/knowforge#2405)。
评论
登录后参与评论
正在加载评论…
KnowForge