        (AvroJob/setMapOutputKeySchema (avro/parse-schema ks))
        (.setMapOutputValueClass NullWritable)))
   ([^Job job ks vs]
-     (doto job
-       (set-data-model)
-       (AvroJob/setMapOutputKeySchema (avro/parse-schema ks))
-       (AvroJob/setMapOutputValueSchema (avro/parse-schema vs)))))
+     (if (nil? vs)
+       (set-map-output ks)
+       (doto job
+         (set-data-model)
+         (AvroJob/setMapOutputKeySchema (avro/parse-schema ks))
+         (AvroJob/setMapOutputValueSchema (avro/parse-schema vs))))))
 
 (defn set-grouping
   "Configure `job` combine & reduce phases to group keys via schema `gs`,

      (mpartial set-grouping gs)]))

(defn dsink
  "Distributed sink for Avro output."
  [schemas path]
  (dsink/dsink
   (let [defaults (-> schemas count (repeat :default))]

       (FileInputFormat/addInputPath job (fs/path path))))))

(defn shuffle
  "Configuration step for Avro shuffle, with key schema `ks`, optional value
schema `vs`, and optional grouping schema `gs`."
  ([ks] (mpartial set-map-output ks))
  ([ks vs] (mpartial set-map-output ks vs))
  ([ks vs gs]
