@Override
  public Object doDeserialize(final Writable blob) throws SerDeException {
    Text rowText = (Text) blob;

    CSVReader csv = null;
    try {
      csv = newReader(new CharArrayReader(rowText.toString().toCharArray()), separatorChar,
              quoteChar, escapeChar);
      final String[] read = csv.readNext();

      for (int i = 0; i < numCols; i++) {
        if (read != null && i < read.length) {
          row.set(i, read[i]);
        } else {
          row.set(i, null);
        }
      }

      return row;
    } catch (final Exception e) {
      throw new SerDeException(e);
    } finally {
      if (csv != null) {
        try {
          csv.close();
        } catch (final Exception e) {
          log.error("fail to close csv writer", e);
        }
      }
    }
  }
OpenCSVSerde use opencsv to deserialize CSV format.
Users can specify custom separator, quote or escape characters. And the default separator(\),
quote("), and escape characters(\) are the same as the opencsv library.
serde/src/java/org/apache/hadoop/hive/serde2/OpenCSVSerde.java