code: def test_array_field(spark_test_ctx):
      @pandas_udf("array<float>")
      def gen_array(v):
          return v.map(lambda x: np.random.rand(10))
  
      df1 = (
          spark_test_ctx.spark.range(10)
          .withColumn("v", gen_array("id"))
          .repartition(2)
      )
      cv1 = make_spark_converter(df1)
      # we can auto infer one-dim array shape
      with cv1.make_tf_dataset(batch_size=4, num_epochs=1) as dataset:
          tf_iter = dataset.make_one_shot_iterator()
          next_op = tf_iter.get_next()
          with tf.Session() as sess:
              batch1 = sess.run(next_op)
          assert batch1.v.shape == (4, 10)
  
imports: import os
  import subprocess
  import sys
  import tempfile
  import threading
  import time
  from distutils.version import LooseVersion
  import numpy
  import pyspark
  import pytest
  import py4j
  import tensorflow.compat.v1
  from pyspark.sql.functions import pandas_udf
  from pyspark.sql.types import ArrayType, BinaryType, BooleanType, ByteType, DoubleType, FloatType, IntegerType, LongType, ShortType, StringType, StructField, StructType
  from six.moves.urllib.parse import urlparse
  from petastorm import make_batch_reader
  from petastorm.fs_utils import FilesystemResolver
  from petastorm.spark import SparkDatasetConverter, make_spark_converter, spark_dataset_converter
  from petastorm.spark.spark_dataset_converter import _check_dataset_file_median_size, _check_parent_cache_dir_url, _check_rank_and_size_consistent_with_horovod, _check_url, _get_horovod_rank_and_size, _get_spark_session, _make_sub_dir_url, register_delete_dir_handler, _wait_file_available, _normalize_databricks_dbfs_url
  from unittest import mock
  from petastorm.tests.test_tf_utils import create_tf_graph
label_desc: Use image node_id 2 for calling a global function with example usage: test_array_field(spark_test_ctx) and returns: v