code: def configure(
      self,
      datasets: Dict[str, Dataset],
      world_size: int,
      worker_handles: Optional[List[ActorHandle]],
      worker_node_ids: Optional[List[NodeIdStr]],
      **kwargs,
  ) -> List[Dict[str, DataIterator]]:
      assert (
          len(datasets) == 1
      ), "This example only handles the simple case"
  
      # Configure Ray Data for ingest.
      ctx = ray.data.DataContext.get_current()
      ctx.execution_options = DataConfig.default_ingest_options()
  
      # Split the stream into shards.
      iterator_shards = datasets["train"].streaming_split(
          world_size, equal=True, locality_hints=worker_node_ids
      )
  
      # Return the assigned iterators for each worker.
      return [{"train": it} for it in iterator_shards]
  
file_path: ray/doc/source/train/doc_code/data_ingest_torch_new.py
imports: import ray
  from ray import train
  from ray.train import ScalingConfig
  from ray.train.torch import TorchTrainer
  import numpy
  from typing import Dict
  from ray.train import DataConfig
  from typing import Optional, Dict, List
  from ray.data import Dataset, DataIterator, NodeIdStr
  from ray.actor import ActorHandle
label_desc: Use image node_id 1 for calling the MyCustomDataConfig obj's underlying member method code with example usage: obj.configure(datasets, world_size, worker_handles, worker_node_ids) and returns: unknown