<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fromrdd(rdd, nrecords=None, shape=None, index=None, labels=None, dtype=None, ordered=False):
 """ Load series data from a Spark RDD. Assumes keys are tuples with increasing and unique indices, and values are 1d ndarrays. Will try to infer properties that are not explicitly provided. Parameters rdd : SparkRDD An RDD containing series data. shape : tuple or array, optional, default = None Total shape of data (if provided will avoid check). nrecords : int, optional, default = None Number of records (if provided will avoid check). index : array, optional, default = None labels : array, optional, default = None Labels for records. If provided, should have shape of shape[:-1]. dtype : string, default = None Data numerical type (if provided will avoid check) ordered : boolean, optional, default = False Whether or not the rdd is ordered by key """

    from .series import Series
    from bolt.spark.array import BoltArraySpark

    if index is None or dtype is None:
        item = rdd.values().first()

    if index is None:
        index = range(len(item))

    if dtype is None:
        dtype = item.dtype

    if nrecords is None and shape is not None:
        nrecords = prod(shape[:-1])

    if nrecords is None:
        nrecords = rdd.count()

    if shape is None:
        shape = (nrecords, asarray(index).shape[0])

    def process_keys(record):
        k, v = record
        if isinstance(k, int):
            k = (k,)
        return k, v

    values = BoltArraySpark(rdd.map(process_keys), shape=shape, dtype=dtype, split=len(shape)-1, ordered=ordered)
    return Series(values, index=index, labels=labels)