You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by cloud-fan <gi...@git.apache.org> on 2018/12/02 03:05:37 UTC

[GitHub] spark pull request #23120: [SPARK-26151][SQL] Return partial results for bad...

Github user cloud-fan commented on a diff in the pull request:

    https://github.com/apache/spark/pull/23120#discussion_r238083349
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/csv/UnivocityParser.scala ---
    @@ -243,21 +243,27 @@ class UnivocityParser(
             () => getPartialResult(),
             new RuntimeException("Malformed CSV record"))
         } else {
    -      try {
    -        // When the length of the returned tokens is identical to the length of the parsed schema,
    -        // we just need to convert the tokens that correspond to the required columns.
    -        var i = 0
    -        while (i < requiredSchema.length) {
    +      // When the length of the returned tokens is identical to the length of the parsed schema,
    +      // we just need to convert the tokens that correspond to the required columns.
    +      var badRecordException: Option[Throwable] = None
    +      var i = 0
    +      while (i < requiredSchema.length) {
    +        try {
               row(i) = valueConverters(i).apply(getToken(tokens, i))
    -          i += 1
    +        } catch {
    +          case NonFatal(e) =>
    +            badRecordException = badRecordException.orElse(Some(e))
             }
    +        i += 1
    +      }
    +
    +      if (badRecordException.isEmpty) {
             row
    -      } catch {
    -        case NonFatal(e) =>
    -          // For corrupted records with the number of tokens same as the schema,
    -          // CSV reader doesn't support partial results. All fields other than the field
    -          // configured by `columnNameOfCorruptRecord` are set to `null`.
    -          throw BadRecordException(() => getCurrentInput, () => None, e)
    +      } else {
    +        // For corrupted records with the number of tokens same as the schema,
    +        // CSV reader doesn't support partial results. All fields other than the field
    +        // configured by `columnNameOfCorruptRecord` are set to `null`.
    --- End diff --
    
    what do you mean here?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org