code: def loadTFRecords(sc, input_dir, binary_features=[]):
      """Load TFRecords from disk into a Spark DataFrame.
  
      This will attempt to automatically convert the tf.train.Example features into Spark DataFrame columns of equivalent types.
  
      Note: TensorFlow represents both strings and binary types as tf.train.BytesList, and we need to
      disambiguate these types for Spark DataFrames DTypes (StringType and BinaryType), so we require a "hint"
      from the caller in the ``binary_features`` argument.
  
      Args:
        :sc: SparkContext
        :input_dir: location of TFRecords on disk.
        :binary_features: a list of tf.train.Example features which are expected to be binary/bytearrays.
  
      Returns:
        A Spark DataFrame mirroring the tf.train.Example schema.
      """
      import tensorflow as tf
  
      tfr_rdd = sc.newAPIHadoopFile(
          input_dir,
          "org.tensorflow.hadoop.io.TFRecordFileInputFormat",
          keyClass="org.apache.hadoop.io.BytesWritable",
          valueClass="org.apache.hadoop.io.NullWritable",
      )
  
      # infer Spark SQL types from tf.Example
      record = tfr_rdd.take(1)[0]
      example = tf.train.Example()
      example.ParseFromString(bytes(record[0]))
      schema = infer_schema(example, binary_features)
  
      # convert serialized protobuf to tf.Example to Row
      example_rdd = tfr_rdd.mapPartitions(
          lambda x: fromTFExample(x, binary_features)
      )
  
      # create a Spark DataFrame from RDD[Row]
      df = example_rdd.toDF(schema)
  
      # save reference of this dataframe
      loadedDF[df] = input_dir
      return df
  
file_path: TensorFlowOnSpark/tensorflowonspark/dfutil.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import nested_scopes
  from __future__ import print_function
  import tensorflow
  from pyspark.sql import Row
  from pyspark.sql.types import ArrayType, BinaryType, DoubleType, LongType, StringType, StructField, StructType
label_desc: Use image node_id 3 for calling a global function with example usage: loadTFRecords(sc, input_dir, binary_features) and returns: df