class_docstr: This class wraps a function RDD[X] -> RDD[Y] that was passed to
  DStream.transform(), allowing it to be called from Java via Py4J's
  callback server.
  
  Java calls this function with a sequence of JavaRDDs and this function
  returns a single JavaRDD pointer back to Java.
class_docstr_tok: ["This","class","wraps","a","function","RDD","[","X","]","-",">","RDD","[","Y","]","that","was","passed","to","DStream.transform","(",")",",","allowing","it","to","be","called","from","Java","via","Py4J's","callback","server",".","Java","calls","this","function","with","a","sequence","of","JavaRDDs","and","this","function","returns","a","single","JavaRDD","pointer","back","to","Java","."]
code: def __init__(self, ctx, func, *deserializers):
      self.ctx = ctx
      self.func = func
      self.deserializers = deserializers
      self.rdd_wrap_func = lambda jrdd, ctx, ser: RDD(jrdd, ctx, ser)
      self.failure = None
  
file_path: spark/python/pyspark/streaming/util.py
imports: import time
  from datetime import datetime
  import traceback
  import sys
  from py4j.java_gateway import is_instance_of
  from pyspark import SparkContext, RDD
label_desc: Use image node_id 1 to create a new TransformFunction object  with example: obj = TransformFunction(ctx, func)