code: def create_cached_dataframe_meta(
      cls,
      df,
      parent_cache_dir_url,
      row_group_size,
      compression_codec,
      dtype,
  ):
      meta = cls(
          df,
          parent_cache_dir_url,
          row_group_size,
          compression_codec,
          dtype,
      )
      meta.cache_dir_url = _materialize_df(
          df,
          parent_cache_dir_url=parent_cache_dir_url,
          parquet_row_group_size_bytes=row_group_size,
          compression_codec=compression_codec,
          dtype=dtype,
      )
      return meta
  
imports: import atexit
  import datetime
  import logging
  import os
  import shutil
  import threading
  import time
  import uuid
  from distutils.version import LooseVersion
  from multiprocessing.pool import ThreadPool
  from typing import List, Any
  import pyspark
  from pyarrow import LocalFileSystem
  from pyspark.sql.session import SparkSession
  from pyspark.sql.types import ArrayType, DoubleType, FloatType
  from six.moves.urllib.parse import urlparse
  from petastorm import make_batch_reader
  from petastorm.fs_utils import FilesystemResolver, get_filesystem_and_path_or_paths, normalize_dir_url
  from fsspec.core import strip_protocol
label_desc: Use image node_id 2 for calling the CachedDataFrameMeta obj's underlying member method code with example usage: obj.create_cached_dataframe_meta(cls, df, parent_cache_dir_url, row_group_size, compression_codec, dtype) and returns: meta