code: def maybe_dataframe_to_xshards(
      data,
      validation_data,
      feature_cols,
      label_cols,
      mode="fit",
      num_workers=None,
      accept_str_col=False,
      shard_size=None,
  ):
      from pyspark.sql import DataFrame
  
      if isinstance(data, DataFrame):
          data, validation_data = dataframe_to_xshards(
              data,
              validation_data,
              feature_cols=feature_cols,
              label_cols=label_cols,
              mode=mode,
              num_workers=num_workers,
              accept_str_col=accept_str_col,
              shard_size=shard_size,
          )
      return data, validation_data
  
imports: from contextlib import closing
  import socket
  import sys
  import tempfile
  import shutil
  from bigdl.dllib.utils import log4Error
  from bigdl.dllib.utils.common import callBigDlFunc
  from bigdl.dllib.utils.file_utils import get_file_list, is_local_path
  from bigdl.orca.data import SparkXShards
  from bigdl.orca.data.utils import get_size
  from bigdl.orca.data.file import put_local_dir_tree_to_remote, put_local_file_to_remote, get_remote_file_to_local, get_remote_dir_to_local
  from bigdl.dllib.utils.utils import convert_row_to_numpy
  from functools import partial
  import numpy
  from bigdl.orca.common import SafePickle
  import os
  import subprocess
  from bigdl.dllib.utils.log4Error import *
label_desc: Use image node_id 21 for calling a global function with example usage: maybe_dataframe_to_xshards(data, validation_data, feature_cols, label_cols, mode, num_workers, accept_str_col, shard_size) and returns: data,  validation_data