AvroSchema

结构体 AvroSchema 

源代码
pub struct AvroSchema {
    pub json_string: String,
}
展开描述

Avro schema 的 JSON 字符串表示的包装器。

字段§

§json_string: String

Avro schema 的 JSON 字符串。

实现§

§

impl AvroSchema

源代码

pub fn new(json_string: String) -> Self

从 JSON 字符串创建一个新的 AvroSchema

源代码

pub(crate) fn schema(&self) -> Result<Schema<'_>, ArrowError>

源代码

pub fn fingerprint( &self, hash_type: FingerprintAlgorithm, ) -> Result<Fingerprint, ArrowError>

返回 schema 的指纹,使用指定的 FingerprintAlgorithm 计算。

指纹是根据 Avro 规范定义的 schema 的“解析规范形式”计算的。根据 hash_type,这将返回其中一个受支持的 Fingerprint 变体

注意:FingerprintAlgorithm::IdFingerprintAlgorithm::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_typeFingerprintAlgorithm::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>

为给定的 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>

从 Arrow [`ArrowSchema`] 构建 Avro JSON,应用给定的空联合顺序,并可选地剥离内部 Arrow 元数据。

如果输入 Arrow schema 在 SCHEMA_METADATA_KEY 中已包含 Avro JSON,则按原样返回该 JSON 以保留精确的头部编码对齐;否则,将生成一个新的 JSON,该 JSON 在**所有可空位置**都遵循 null_union_order

Trait 实现§

§

impl Clone for AvroSchema

§

fn clone(&self) -> AvroSchema

返回值的副本。 阅读更多
1.0.0 · §

fn clone_from(&mut self, source: &Self)

执行从 source 的复制赋值。 阅读更多
§

impl Debug for AvroSchema

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

使用给定的格式化程序格式化值。 阅读更多
§

impl<'de> Deserialize<'de> for AvroSchema

§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

从给定的 Serde 反序列化器反序列化此值。 阅读更多
§

impl PartialEq for AvroSchema

§

fn eq(&self, other: &AvroSchema) -> bool

测试 selfother 值是否相等,并由 == 使用。
1.0.0 · §

fn ne(&self, other: &Rhs) -> bool

测试 !=。默认实现几乎总是足够的,不应在没有充分理由的情况下重写。
§

impl Serialize for AvroSchema

§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

将此值序列化到给定的 Serde 序列化器中。 阅读更多
§

impl TryFrom<&Schema> for AvroSchema

§

fn try_from(schema: &ArrowSchema) -> Result<Self, Self::Error>

ArrowSchema 转换为 AvroSchema,委托给 AvroSchema::from_arrow_with_options 并使用 None,以便联合空排序由 Nullability::default() 决定。

§

type Error = ArrowError

转换错误时返回的类型。
§

impl Eq for AvroSchema

§

impl StructuralPartialEq for AvroSchema

自动 Trait 实现§

通用实现§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

获取 selfTypeId阅读更多
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

从拥有的值进行不可变借用。 阅读更多
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

从拥有的值进行可变借用。 阅读更多
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬这是一个仅限 nightly 的实验性 API。(clone_to_uninit
执行从 selfdest 的复制赋值。 阅读更多
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

检查此值是否与给定键等效。 阅读更多
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

将 self 与 key 进行比较,如果它们相等则返回 true
§

impl<T> From<T> for T

§

fn from(t: T) -> T

返回未更改的参数。

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

调用 U::from(self)

也就是说,此转换是 From<T> for U 的实现选择执行的任何操作。

§

impl<T> Same for T

§

type Output = T

应该总是 Self
§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

获取所有权后的结果类型。
§

fn to_owned(&self) -> T

从借用的数据创建拥有的数据,通常通过克隆。 阅读更多
§

fn clone_into(&self, target: &mut T)

使用借用的数据替换拥有的数据,通常通过克隆。 阅读更多
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

转换错误时返回的类型。
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

转换错误时返回的类型。
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,