class_docstr: A collection of data which can be pre-processed in parallel on Spark
class_docstr_tok: ["A","collection","of","data","which","can","be","pre-processed","in","parallel","on","Spark"]
code: def _get_schema(self):
      if "schema" in self.type:
          return self.type["schema"]
      else:
          if self._get_class_name() == "pandas.core.frame.DataFrame":
              import pandas as pd
  
              columns, dtypes = self.rdd.map(
                  lambda x: (x.columns, x.dtypes)
              ).first()
              self.type["schema"] = {
                  "columns": columns,
                  "dtypes": dtypes,
              }
              return self.type["schema"]
          return None
  
imports: from py4j.protocol import Py4JError
  from zoo.orca.data.utils import *
  from zoo.orca import OrcaContext
  from zoo.common.nncontext import init_nncontext
  from zoo import ZooContext, get_node_and_core_number
  from zoo.util import nest
label_desc: Use image node_id 20 for calling the SparkXShards obj's underlying member method code with example usage: obj._get_schema() and returns: self, None, self