Come mostrare il contenuto della colonna completa in un Spark Dataframe?


201

Sto usando spark-csv per caricare i dati in un DataFrame. Voglio fare una semplice query e visualizzare il contenuto:

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()

Il col sembra troncato:

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:...|
+--------------------+

Come faccio a mostrare l'intero contenuto della colonna?

Risposte:


372

results.show(20, false)non troncerà. Controlla la fonte


4
@tracer Gradirei se accetti la mia risposta dato che risolve il tuo problema. Grazie!
TomTom101,

3
Non OP ma questa è davvero la risposta giusta: correzione minore, booleana dovrebbe essere Falso, non falso.
xv70,

77
Sarebbe "Falso" in Python, ma "Falso" in Scala / Java
Drewrobb

4
è falso (non falso) in spark-shell
Luca Gibelli,

5
l'equivalente per scrivere in streaming in modalità console èdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess

38

Se lo metti results.show(false), i risultati non verranno troncati


2
Immagino che il commento alla risposta di TomTom101 su falseapplica anche qui.
Mogsdad,

1
@Narendra Parmar dovrebbe essere la sintassi results.show(20, False). Quello che hai citato darà errore.
Jai Prakash,

@ Jai Prakash, ho dato questa risposta per scala e stai parlando di pitone,
Narendra Parmar,

@NarendraParmar mi dispiace che tu abbia ragione. In scalaentrambe le opzioni sono valide. results.show(false)eresults.show(20, false)
Jai Prakash il

17

Le altre soluzioni sono buone. Se questi sono i tuoi obiettivi:

  1. Nessun troncamento di colonne,
  2. Nessuna perdita di file,
  3. Veloce e
  4. Efficiente

Queste due linee sono utili ...

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

Persistendo, le 2 azioni degli esecutori, contano e mostrano, sono più veloci ed efficienti quando si usa persisto si cachemantiene la struttura di data frame sottostante temporanea all'interno degli esecutori. Scopri di più su persist e cache .


1
Molto bella. Grazie!
timbram

15

Il codice seguente aiuta a visualizzare tutte le righe senza troncamento in ogni colonna

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

stessa questio ho chiesto al risponditore precedente: questa causa dfviene raccolta due volte?
javadba,

@javadba sì, penso che count () andrà attraverso df una volta e show () raccoglierà df due volte.
MoeChen,

10

results.show(20, False)o a results.show(20, false) seconda che lo si stia eseguendo su Java / Scala / Python


3

results.show(false) ti mostrerà l'intero contenuto della colonna.

Mostra il metodo per impostazione predefinita limite a 20 e l'aggiunta di un numero prima falsemostrerà più righe.


2

prova questo comando:

df.show(df.count())

1
Prova questo: df.show (alcuni no) funzionerà ma df.show (df.count ()) non funzionerà df.count fornisce un tipo di output lungo che non è accettato da df.show () poiché accetta il tipo intero.
Thota Kranthi Kumar,

Esempio usare df.show (2000).
Recupererà

2
questa causa dfviene raccolta due volte?
javadba,

2

results.show(20,false) ha fatto il trucco per me alla Scala.


1

All'interno di Databricks è possibile visualizzare il frame di dati in un formato tabulare. Con il comando:

display(results)

Sembrerà

inserisci qui la descrizione dell'immagine



0

Prova questo in scala:

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

Il metodo show accetta un numero intero e un valore booleano ma df.count restituisce Long ... quindi è richiesto il cast di tipo


0

In c # Option("truncate", false)non tronca i dati nell'output.

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

0

La seguente risposta si applica a un'applicazione Spark Streaming.

Impostando l'opzione "tronca" su false, è possibile indicare al sink di output di visualizzare l'intera colonna.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.