docs: def writeMNIST(sc, input_images, input_labels, output, format, num_partitions):
    """Writes MNIST image/label vectors into parallelized files on HDFS"""
    # load MNIST gzip into memory
    with open(input_images, 'rb') as f:
      images = numpy.array(mnist.extract_images(f))
  
    with open(input_labels, 'rb') as f:
      if format == "csv2":
        labels = numpy.array(mnist.extract_labels(f, one_hot=False))
      else:
        labels = numpy.array(mnist.extract_labels(f, one_hot=True))
  
    shape = images.shape
    print("images.shape: {0}".format(shape))          # 60000 x 28 x 28
    print("labels.shape: {0}".format(labels.shape))   # 60000 x 10
  
    # create RDDs of vectors
    imageRDD = sc.parallelize(images.reshape(shape[0], shape[1] * shape[2]), num_partitions)
    labelRDD = sc.parallelize(labels, num_partitions)
  
    output_images = output + "/images"
    output_labels = output + "/labels"
  
    # save RDDs as specific format
    if format == "pickle":
      imageRDD.saveAsPickleFile(output_images)
      labelRDD.saveAsPickleFile(output_labels)
    elif format == "csv":
      imageRDD.map(toCSV).saveAsTextFile(output_images)
      labelRDD.map(toCSV).saveAsTextFile(output_labels)
    elif format == "csv2":
      imageRDD.map(toCSV).zip(labelRDD).map(lambda x: str(x[1]) + "|" + x[0]).saveAsTextFile(output)
    else:  # format == "tfr":
      tfRDD = imageRDD.zip(labelRDD).map(lambda x: (bytearray(toTFExample(x[0], x[1])), None))
      # requires: --jars tensorflow-hadoop-1.0-SNAPSHOT.jar
      tfRDD.saveAsNewAPIHadoopFile(output, "org.tensorflow.hadoop.io.TFRecordFileOutputFormat",
                                   keyClass="org.apache.hadoop.io.BytesWritable",
                                   valueClass="org.apache.hadoop.io.NullWritable")