format_schema
format_schema_message_name
format_schema 中指定的 schema 里所需消息的名称。
为保持与 legacy format_schema 格式 (file_name:message_name) 的兼容性:
- 如果未指定
format_schema_message_name,则会从 legacyformat_schema值中的message_name部分推断出消息名称。 - 如果在使用 legacy 格式时指定了
format_schema_message_name,则会引发错误。
format_schema_source
format_schema 的来源。
可能的值:
- ‘file’ (默认) :
format_schema是位于format_schemas目录中的 schema file 名称。 - ‘string’:
format_schema是 schema 的字面内容。 - ‘query’:
format_schema是一个用于获取 schema 的查询。 当format_schema_source设置为 ‘query’ 时,需满足以下条件: - 查询必须恰好返回一个值:即单行单个字符串列。
- 查询结果会被视为 schema 内容。
- 该结果会缓存在本地
format_schemas目录中。 - 你可以使用以下命令清除本地缓存:
SYSTEM DROP FORMAT SCHEMA CACHE FOR Files。 - 一旦缓存,相同的查询将不会再次执行来拉取 schema,直到显式清除缓存为止
- 除了本地缓存文件外,Protobuf Message 也会缓存在内存中。即使清除了本地缓存文件,也必须使用
SYSTEM DROP FORMAT SCHEMA CACHE [FOR Protobuf]清除内存缓存,才能完全刷新 schema。 - 运行查询
SYSTEM DROP FORMAT SCHEMA CACHE,即可一次性清除缓存文件和 Protobuf Message schema 的缓存。