public static String computeSchemaHash(BigqueryFieldExporterSet exporterSet) {
		try {
			List<BigqueryFieldExporter> exporters = exporterSet.getExporters();
			MessageDigest md = MessageDigest.getInstance("MD5");
			for (BigqueryFieldExporter exporter : exporters) {
				for (int i = 0; i < exporter.getFieldCount(); i++) {
					md.update(exporter.getFieldName(i).getBytes("UTF-8"));
					md.update(exporter.getFieldType(i).getBytes("UTF-8"));
					if (exporter instanceof BigqueryRecordFieldExporter) {
						md.update(((BigqueryRecordFieldExporter)exporter).getRecordFields().toString().getBytes());
					}
				}
			}
			byte[] array = md.digest();
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < array.length; ++i) {
				sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
			}
			return sb.toString().substring(0, 6);
		} catch (NoSuchAlgorithmException nsae) {
			throw new RuntimeException("Couldn't find MD5 algorithm for schema hash", nsae);
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException("Couldn't get UTF-8 encoding for schema hash", e);
		}
	}