code: def _get_schema(header, schema):
      if schema is None or len(schema) == 0:
          # Use header to generate schema
          if header is None or len(header) == 0:
              header = DEFAULT_HEADER
          elif len(header) > 4:
              warnings.warn(WARNING_MOVIE_LENS_HEADER)
              header = header[:4]
  
          schema = StructType()
          try:
              (
                  schema.add(StructField(header[0], IntegerType()))
                  .add(StructField(header[1], IntegerType()))
                  .add(StructField(header[2], FloatType()))
                  .add(StructField(header[3], LongType()))
              )
          except IndexError:
              pass
      else:
          if header is not None:
              warnings.warn(WARNING_HAVE_SCHEMA_AND_HEADER)
  
          if len(schema) > 4:
              warnings.warn(WARNING_MOVIE_LENS_HEADER)
              schema = schema[:4]
  
      return schema
  
imports: import os
  import re
  import random
  import shutil
  import warnings
  import pandas
  from typing import Optional
  from zipfile import ZipFile
  from recommenders.datasets.download_utils import maybe_download, download_path
  from recommenders.utils.notebook_utils import is_databricks
  from recommenders.utils.constants import DEFAULT_HEADER, DEFAULT_ITEM_COL, DEFAULT_USER_COL, DEFAULT_RATING_COL, DEFAULT_TIMESTAMP_COL, DEFAULT_TITLE_COL, DEFAULT_GENRE_COL
  import pandera
  import pandera.extensions
  from pandera import Field
  from pandera.typing import Series
label_desc: Use image node_id 5 for calling a global function with example usage: _get_schema(header, schema) and returns: schema