@@ -22,20 +22,16 @@ import scala.util.control.Exception.allCatch
2222import org .apache .spark .rdd .RDD
2323import org .apache .spark .sql .catalyst .analysis .TypeCoercion
2424import org .apache .spark .sql .catalyst .expressions .ExprUtils
25- import org .apache .spark .sql .catalyst .util .{ DateFormatter , TimestampFormatter }
25+ import org .apache .spark .sql .catalyst .util .TimestampFormatter
2626import org .apache .spark .sql .types ._
2727
2828class CSVInferSchema (val options : CSVOptions ) extends Serializable {
2929
3030 @ transient
31- private lazy val timestampFormatter = TimestampFormatter (
31+ private lazy val timestampParser = TimestampFormatter (
3232 options.timestampFormat,
3333 options.timeZone,
3434 options.locale)
35- @ transient
36- private lazy val dateFormatter = DateFormatter (
37- options.dateFormat,
38- options.locale)
3935
4036 private val decimalParser = {
4137 ExprUtils .getDecimalParser(options.locale)
@@ -108,7 +104,6 @@ class CSVInferSchema(val options: CSVOptions) extends Serializable {
108104 compatibleType(typeSoFar, tryParseDecimal(field)).getOrElse(StringType )
109105 case DoubleType => tryParseDouble(field)
110106 case TimestampType => tryParseTimestamp(field)
111- case DateType => tryParseDate(field)
112107 case BooleanType => tryParseBoolean(field)
113108 case StringType => StringType
114109 case other : DataType =>
@@ -164,16 +159,9 @@ class CSVInferSchema(val options: CSVOptions) extends Serializable {
164159 }
165160
166161 private def tryParseTimestamp (field : String ): DataType = {
167- if ((allCatch opt timestampFormatter.parse(field)).isDefined) {
162+ // This case infers a custom `dataFormat` is set.
163+ if ((allCatch opt timestampParser.parse(field)).isDefined) {
168164 TimestampType
169- } else {
170- tryParseDate(field)
171- }
172- }
173-
174- private def tryParseDate (field : String ): DataType = {
175- if ((allCatch opt dateFormatter.parse(field)).isDefined) {
176- DateType
177165 } else {
178166 tryParseBoolean(field)
179167 }
0 commit comments