Github user xuanyuanking commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21370#discussion_r191702754
  
    --- Diff: sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala ---
    @@ -291,37 +289,57 @@ class Dataset[T] private[sql](
             }
           }
     
    +      rows = rows.map {
    +        _.zipWithIndex.map { case (cell, i) =>
    +          if (truncate > 0) {
    +            StringUtils.leftPad(cell, colWidths(i))
    +          } else {
    +            StringUtils.rightPad(cell, colWidths(i))
    +          }
    +        }
    +      }
    +    }
    +    rows
    +  }
    +
    +  /**
    +   * Compose the string representing rows for output
    +   *
    +   * @param _numRows Number of rows to show
    +   * @param truncate If set to more than 0, truncates strings to 
`truncate` characters and
    +   *                   all cells will be aligned right.
    +   * @param vertical If set to true, prints output rows vertically (one 
line per column value).
    +   */
    +  private[sql] def showString(
    +      _numRows: Int,
    +      truncate: Int = 20,
    +      vertical: Boolean = false): String = {
    +    val numRows = _numRows.max(0).min(Int.MaxValue - 1)
    +    // Get rows represented by Seq[Seq[String]], we may get one more line 
if it has more data.
    +    val rows = getRows(numRows, truncate, vertical)
    +    val fieldNames = rows.head
    +    val data = rows.tail
    +
    +    val hasMoreData = data.length > numRows
    +    val dataRows = data.take(numRows)
    +
    +    val sb = new StringBuilder
    +    if (!vertical) {
           // Create SeparateLine
    -      val sep: String = colWidths.map("-" * _).addString(sb, "+", "+", 
"+\n").toString()
    +      val sep: String = fieldNames.map(_.length).toArray
    +        .map("-" * _).addString(sb, "+", "+", "+\n").toString()
     
           // column names
    -      rows.head.zipWithIndex.map { case (cell, i) =>
    -        if (truncate > 0) {
    -          StringUtils.leftPad(cell, colWidths(i))
    -        } else {
    -          StringUtils.rightPad(cell, colWidths(i))
    -        }
    -      }.addString(sb, "|", "|", "|\n")
    -
    +      fieldNames.addString(sb, "|", "|", "|\n")
           sb.append(sep)
     
           // data
    -      rows.tail.foreach {
    -        _.zipWithIndex.map { case (cell, i) =>
    -          if (truncate > 0) {
    -            StringUtils.leftPad(cell.toString, colWidths(i))
    -          } else {
    -            StringUtils.rightPad(cell.toString, colWidths(i))
    -          }
    -        }.addString(sb, "|", "|", "|\n")
    +      dataRows.foreach {
    +        _.addString(sb, "|", "|", "|\n")
    --- End diff --
    
    Thanks, done in d4bf01a


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to