pub struct AvroSchema {
pub json_string: String,
}展开描述
Avro schema 的 JSON 字符串表示的包装器。
字段§
§json_string: StringAvro schema 的 JSON 字符串。
实现§
源§impl AvroSchema
impl AvroSchema
pub(crate) fn schema(&self) -> Result<Schema<'_>, ArrowError>
源代码pub fn fingerprint( &self, hash_type: FingerprintAlgorithm, ) -> Result<Fingerprint, ArrowError>
pub fn fingerprint( &self, hash_type: FingerprintAlgorithm, ) -> Result<Fingerprint, ArrowError>
返回 schema 的指纹,使用指定的 FingerprintAlgorithm 计算。
指纹是根据 Avro 规范定义的 schema 的“解析规范形式”计算的。根据 hash_type,这将返回其中一个受支持的 Fingerprint 变体
- 对于
FingerprintAlgorithm::Rabin返回Fingerprint::Rabin - 对于
FingerprintAlgorithm::MD5返回Fingerprint::MD5 - 对于
FingerprintAlgorithm::SHA256返回Fingerprint::SHA256
注意:FingerprintAlgorithm::Id 或 FingerprintAlgorithm::Id64 不能用于生成指纹,否则将导致错误。如果您打算使用基于 Schema Registry ID 的线路格式,请使用 SchemaStore::set 或通过 Fingerprint::load_fingerprint_id 直接加载 Fingerprint::Id,或者对于 Fingerprint::Id64 通过 Fingerprint::load_fingerprint_id64 加载。
另请参阅:https://avro.apache.org/docs/1.11.1/specification/#schema-fingerprints
§错误
如果 schema 反序列化失败、生成 schema 的规范形式失败,或者 hash_type 是 FingerprintAlgorithm::Id,则返回错误。
§示例
use arrow_avro::schema::{AvroSchema, FingerprintAlgorithm};
let avro = AvroSchema::new("\"string\"".to_string());
let fp = avro.fingerprint(FingerprintAlgorithm::Rabin).unwrap();pub(crate) fn generate_fingerprint( schema: &Schema<'_>, hash_type: FingerprintAlgorithm, ) -> Result<Fingerprint, ArrowError>
源代码pub(crate) fn generate_canonical_form( schema: &Schema<'_>, ) -> Result<String, ArrowError>
pub(crate) fn generate_canonical_form( schema: &Schema<'_>, ) -> Result<String, ArrowError>
为给定的 Schema 生成“解析规范形式”。
规范形式是 schema 的标准化 JSON 表示,主要用于生成 schema 指纹以进行相等性检查。
此形式会剥离不影响 schema 身份的属性,例如 doc 字段、aliases 以及 Avro 规范中未定义的任何属性。
https://avro.apache.org/docs/1.11.1/specification/#parsing-canonical-form-for-schemas
源代码pub(crate) fn from_arrow_with_options( schema: &ArrowSchema, options: Option<AvroSchemaOptions>, ) -> Result<AvroSchema, ArrowError>
pub(crate) fn from_arrow_with_options( schema: &ArrowSchema, options: Option<AvroSchemaOptions>, ) -> Result<AvroSchema, ArrowError>
从 Arrow [`ArrowSchema`] 构建 Avro JSON,应用给定的空联合顺序,并可选地剥离内部 Arrow 元数据。
如果输入 Arrow schema 在 SCHEMA_METADATA_KEY 中已包含 Avro JSON,则按原样返回该 JSON 以保留精确的头部编码对齐;否则,将生成一个新的 JSON,该 JSON 在**所有可空位置**都遵循 null_union_order。
Trait 实现§
源§impl Clone for AvroSchema
impl Clone for AvroSchema
源§fn clone(&self) -> AvroSchema
fn clone(&self) -> AvroSchema
1.0.0 · 源§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source 的复制赋值。 阅读更多源§impl<'de> Deserialize<'de> for AvroSchema
impl<'de> Deserialize<'de> for AvroSchema
源§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
源§impl PartialEq for AvroSchema
impl PartialEq for AvroSchema
源§impl Serialize for AvroSchema
impl Serialize for AvroSchema
源§impl TryFrom<&Schema> for AvroSchema
impl TryFrom<&Schema> for AvroSchema
impl Eq for AvroSchema
impl StructuralPartialEq for AvroSchema
自动 Trait 实现§
impl Freeze for AvroSchema
impl RefUnwindSafe for AvroSchema
impl Send for AvroSchema
impl Sync for AvroSchema
impl Unpin for AvroSchema
impl UnwindSafe for AvroSchema
通用实现§
源§impl<T> CloneToUninit for Twhere T: Clone,
impl<T> CloneToUninit for Twhere T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key 进行比较,如果它们相等则返回 true。