private CSVReader newReader(final Reader reader, char separator, char quote, char escape) {
    // CSVReader will throw an exception if any of separator, quote, or escape is the same, but
    // the CSV format specifies that the escape character and quote char are the same... very weird
    if (CSVWriter.DEFAULT_ESCAPE_CHARACTER == escape) {
      return new CSVReaderBuilder(reader).withCSVParser(
          new CSVParserBuilder().withSeparator(separator).withQuoteChar(quote).build()).build();
    } else {
      return new CSVReaderBuilder(reader).withCSVParser(
          new CSVParserBuilder().withSeparator(separator).withQuoteChar(quote).withEscapeChar(escape).build()).build();
    }
  }
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