316

I am using spark-csv to load data into a DataFrame. I want to do a simple query and display the content:

val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("my.csv")
df.registerTempTable("tasks")
results = sqlContext.sql("select col from tasks");
results.show()

The col seems truncated:

scala> results.show();
+--------------------+
|                 col|
+--------------------+
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-06 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:21:...|
|2015-11-16 07:21:...|
|2015-11-16 07:21:...|
+--------------------+

How do I show the full content of the column?

Hongbo Miao
  • 45,290
  • 60
  • 174
  • 267
tracer
  • 3,265
  • 2
  • 15
  • 6

17 Answers17

555

results.show(20, false) will not truncate. Check the source

20 is the default number of rows displayed when show() is called without any arguments.

GreenGiant
  • 4,930
  • 1
  • 46
  • 76
TomTom101
  • 6,581
  • 2
  • 20
  • 31
65

If you put results.show(false) , results will not be truncated

Shubham Chaudhary
  • 47,722
  • 9
  • 78
  • 80
Narendra Parmar
  • 1,329
  • 12
  • 17
41

Below code would help to view all rows without truncation in each column

df.show(df.count(), False)
MoeChen
  • 719
  • 6
  • 5
  • 1
    same questio i asked the prior answerer: does this cause `df` to be collected twice? – WestCoastProjects Apr 19 '18 at 03:51
  • @javadba yes, I think count() will go through df once, and show() will collect df twice. – MoeChen Feb 13 '20 at 20:00
  • As an alternative, you could give a very large number as the first parameter instead of `df.count()` in order to save on the requirement to persist. For example, if the row count of df is 1000, you could do `df.show(1000000, false)` and it will work. Tried the following and it worked: `scala> println(df.count) res2: Long = 987 scala> df.show(990)` – Omkar Neogi Nov 01 '21 at 09:53
23

The other solutions are good. If these are your goals:

  1. No truncation of columns,
  2. No loss of rows,
  3. Fast and
  4. Efficient

These two lines are useful ...

    df.persist
    df.show(df.count, false) // in Scala or 'False' in Python

By persisting, the 2 executor actions, count and show, are faster & more efficient when using persist or cache to maintain the interim underlying dataframe structure within the executors. See more about persist and cache.

codeaperature
  • 1,089
  • 2
  • 10
  • 25
12

results.show(20, False) or results.show(20, false) depending on whether you are running it on Java/Scala/Python

Sai
  • 711
  • 6
  • 24
Deepak Babu P R
  • 121
  • 1
  • 2
11

In Pyspark we can use

df.show(truncate=False) this will display the full content of the columns without truncation.

df.show(5,truncate=False) this will display the full content of the first five rows.

8

The following answer applies to a Spark Streaming application.

By setting the "truncate" option to false, you can tell the output sink to display the full column.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
farrellw
  • 1,340
  • 15
  • 12
4

Within Databricks you can visualize the dataframe in a tabular format. With the command:

display(results)

It will look like

enter image description here

Ignacio Alorre
  • 7,307
  • 8
  • 57
  • 94
4

In c# Option("truncate", false) does not truncate data in the output.

StreamingQuery query = spark
                    .Sql("SELECT * FROM Messages")
                    .WriteStream()
                    .OutputMode("append")
                    .Format("console")
                    .Option("truncate", false)
                    .Start();
4

Try df.show(20,False)

Notice that if you do not specify the number of rows you want to show, it will show 20 rows but will execute all your dataframe which will take more time !

4

In Spark Pythonic way, remember:

  • if you have to display data from a dataframe, use show(truncate=False) method.
  • else if you have to display data from a Stream dataframe view (Structured Streaming), use the writeStream.format("console").option("truncate", False).start() methods with option.

Hope it could helps someone.

ngenne
  • 86
  • 1
  • 3
3

try this command :

df.show(df.count())
epic_last_song
  • 153
  • 1
  • 6
3

results.show(false) will show you the full column content.

Show method by default limit to 20, and adding a number before false will show more rows.

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
3

results.show(20,false) did the trick for me in Scala.

zero323
  • 322,348
  • 103
  • 959
  • 935
SKA
  • 67
  • 3
3

Tried this in pyspark

df.show(truncate=0)
onemanarmy
  • 93
  • 10
1

PYSPARK

In the below code, df is the name of dataframe. 1st parameter is to show all rows in the dataframe dynamically rather than hardcoding a numeric value. The 2nd parameter will take care of displaying full column contents since the value is set as False.

df.show(df.count(),False)

enter image description here


SCALA

In the below code, df is the name of dataframe. 1st parameter is to show all rows in the dataframe dynamically rather than hardcoding a numeric value. The 2nd parameter will take care of displaying full column contents since the value is set as false.

df.show(df.count().toInt,false)

enter image description here

Sarath Subramanian
  • 20,027
  • 11
  • 82
  • 86
0

Try this in scala:

df.show(df.count.toInt, false)

The show method accepts an integer and a Boolean value but df.count returns Long...so type casting is required

Pritesh Kumar
  • 41
  • 1
  • 3