Source code for graviti.operation.common
#!/usr/bin/env python3
#
# Copyright 2022 Graviti. Licensed under MIT License.
#
"""Common tools."""
import base64
import json
from typing import Tuple
import pyarrow as pa
from graviti.portex import convert_portex_schema_to_avro, record
[docs]def get_schema(schema: record) -> Tuple[str, str, str]:
"""Get portex schema, avro schema and arrow schema.
Arguments:
schema: The portex schema.
Returns:
The tuple of portex schema, avro schema and arrow schema.
"""
portex_schema = schema.to_yaml()
avro_schema = json.dumps(convert_portex_schema_to_avro(schema))
pyarrow_schema = pa.schema(schema.fields.to_pyarrow())
arrow_schema = base64.encodebytes(pyarrow_schema.serialize().to_pybytes()).decode("ascii")
return portex_schema, avro_schema, arrow_schema