class_docstr: Implements a collection of iterators over a shared data stream.
class_docstr_tok: ["Implements","a","collection","of","iterators","over","a","shared","data","stream","."]
docstr: Create a split iterator from the given base Dataset and options.
  
  See also: `Dataset.streaming_split`.
docstr_tok: ["Create","a","split","iterator","from","the","given","base","Dataset","and","options",".","See","also",":","`","Dataset.streaming_split","`","."]
code: def create(
      base_dataset: "Dataset",
      n: int,
      equal: bool,
      locality_hints: Optional[List[NodeIdStr]],
  ) -> List["StreamSplitDataIterator"]:
      """Create a split iterator from the given base Dataset and options.
  
      See also: `Dataset.streaming_split`.
      """
      # To avoid deadlock, the concurrency on this actor must be set to at least `n`.
      coord_actor = SplitCoordinator.options(
          max_concurrency=n,
          scheduling_strategy=NodeAffinitySchedulingStrategy(
              ray.get_runtime_context().get_node_id(), soft=False
          ),
      ).remote(base_dataset, n, equal, locality_hints)
  
      return [
          StreamSplitDataIterator(base_dataset, coord_actor, i, n)
          for i in range(n)
      ]
  
imports: import copy
  import logging
  import threading
  import time
  from dataclasses import replace
  from typing import TYPE_CHECKING, Dict, Iterator, List, Optional, Tuple, Union
  import ray
  from ray.data._internal.execution.interfaces import NodeIdStr, RefBundle
  from ray.data._internal.execution.legacy_compat import execute_to_legacy_bundle_iterator
  from ray.data._internal.execution.operators.output_splitter import OutputSplitter
  from ray.data._internal.execution.streaming_executor import StreamingExecutor
  from ray.data._internal.stats import DatasetStats, DatasetStatsSummary
  from ray.data._internal.util import create_dataset_tag
  from ray.data.block import Block, BlockMetadata
  from ray.data.iterator import DataIterator
  from ray.types import ObjectRef
  from ray.util.debug import log_once
  from ray.util.scheduling_strategies import NodeAffinitySchedulingStrategy
label_desc: Use image node_id 1 for calling the StreamSplitDataIterator obj's underlying member method code with example usage: obj.create(base_dataset, n, equal, locality_hints) and returns: unknown